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