IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Installation de plusieurs services


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Installation de plusieurs services
    Bonjour à tous,

    J'ai développé un service qui scrute la liste des processus et tue un process dont le nom est donné dans le code.

    Cependant, mon service peut être tué et l'application indésirable peut alors être lancée.

    J'ai donc créer 2 autres processus qui se surveillent entre eux et vérifie l'état de mon processus tueur (si l'un des processus est tué, il est automatiquement relancé).

    Cependant je n'arrive pas à installer l'application (je passe par un installeur msi).
    J'obtiens l'erreur suivante :
    "Impossible de créer une instance du type du programme d'installation Service_Tueur.ProjectInstaller. --> Une exception a été levée par la cible d'un appel --> La référence d'objet n'est pas définie à une instance d'un objet."


    Pourriez-vous m'indiquer comment résoudre cette erreur et ainsi installée et configurer plusieurs services au sein d'un même projet?
    Existe t-il une meilleure approche que celle que j'utilise actuellement?
    > Y a t-il un moyen de masquer le nom d'un processus?
    > Y a t-il un moyen d'intégrer un service dans un service protégé ("intuable")
    > Y a t-il moyen de rendre le service intuable?
    > Une autre solution?


    Merci d'avance pour vos suggestions.

    *********************************************************


    Voici mes sources actuelles :

    Service_Tueur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Imports System.Threading.Timer
    Imports System.Threading
     
     
    Public Class Service1
        Private oTimer As System.Threading.Timer
     
        Protected Overrides Sub OnStart(ByVal args() As String)
            ' Ajoutez ici le code pour démarrer votre service. Cette méthode doit
            ' démarrer votre service.
            Dim oCallback As New TimerCallback(AddressOf OnTimedEvent)
            oTimer = New System.Threading.Timer(oCallback, Nothing, 30000, 30000)
     
        End Sub
     
        Protected Overrides Sub OnStop()
            ' Ajoutez ici le code pour effectuer les destructions nécessaires à l'arrêt de votre service.
        End Sub
     
     
        Private Sub OnTimedEvent(ByVal state As Object)
     
            Dim Prc() As Process = Process.GetProcesses() 'on récupère la liste des processus de Windows: ATTENTION ce sont des tableaux
            For x As Integer = 0 To UBound(Prc) 'on fait toute la liste dans une boucle
                'MsgBox(Prc(x).ProcessName.ToString)
                'Debug.Print(Prc(x).ProcessName.ToString)
                If Prc(x).ProcessName.ToString = "SERVICE A TUER" Then 'Cette application nous embete ?
                    Prc(x).Kill() 'on la tue !!!!
                End If
            Next
        End Sub
    End Class
    Watch1 / Watch2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Imports System.Threading.Timer
    Imports System.Threading
    Imports System.ServiceProcess
     
     
    Public Class Watch1
        Private oTimer As System.Threading.Timer
     
        Protected Overrides Sub OnStart(ByVal args() As String)
            ' Ajoutez ici le code pour démarrer votre service. Cette méthode doit
            ' démarrer votre service.
            Dim oCallback As New TimerCallback(AddressOf OnTimedEvent)
            oTimer = New System.Threading.Timer(oCallback, Nothing, 500, 500)
     
        End Sub
     
        Protected Overrides Sub OnStop()
            ' Ajoutez ici le code pour effectuer les destructions nécessaires à l'arrêt de votre service.
        End Sub
     
     
        Private Sub OnTimedEvent(ByVal state As Object)
     
            ' Instanciation d'un objet ServiceController
            Dim myService1 As New ServiceController(".", "Service_Tueur")
            Dim myService2 As New ServiceController(".", "WinWatch1")
     
            ' Si le service n'est pas démarré, alors on le démarre
            If Not myService1.Status = ServiceControllerStatus.Running Then
                myService1.Start()
            End If
     
            If Not myService2.Status = ServiceControllerStatus.Running Then
                myService2.Start()
            End If
     
        End Sub
     
    End Class

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Deux choses :
    - Utilise plutot un For Each pour parcourir les processus.
    - Verifie que tes objets myServiceX ne sont pas Nothing avant d'y accéder.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

Discussions similaires

  1. [IDE][VS2005] Comment installer sans le service pack 2 ?
    Par Abderrahman dans le forum EDI/Outils
    Réponses: 6
    Dernier message: 24/01/2006, 12h30
  2. Installation d'un service à distance
    Par Pico10 dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 02/12/2005, 08h41
  3. Installation d'un service
    Par NoisetteProd dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2005, 09h49
  4. Plusieurs service name sur une machine
    Par cyr2005 dans le forum CORBA
    Réponses: 5
    Dernier message: 02/10/2005, 12h42
  5. Install de plusieurs versions d'Oracle
    Par macben dans le forum Installation
    Réponses: 1
    Dernier message: 14/09/2005, 17h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo