[Résolu] Vérifier qu'un service est démarré en VBS

Vérifier qu'un service est démarré en VBS [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 01-07-2008 à 10:25:28    

Bonjour,
 
Je voudrais en VBS savoir si un service (WZCSVC) est démarré ou non.
Je sais récupérer l'information si le service est en "automatique"/"manuel" mais impossible de savoir si il est
actif....
 
Merci de votre aide


Message édité par proutix le 01-07-2008 à 15:28:01
Reply

Marsh Posté le 01-07-2008 à 10:25:28   

Reply

Marsh Posté le 01-07-2008 à 11:16:19    

Tu peux le récupérer dans la liste des process actifs :
 

Code :
  1. Dim svc
  2. Dim sQuery
  3. Dim oproc
  4. Set svc = GetObject("winmgmts:root\cimv2" )
  5. sQuery = "select * from win32_process where Name='firefox.exe'"
  6. For Each oproc In svc.execquery(sQuery)
  7.       MsgBox oproc.Name
  8. Next
  9. Set svc = Nothing


 
Il n'y aura aucun oproc si le process n'existe pas, sinon autant qu'il y a d'instances de ton process.

Reply

Marsh Posté le 01-07-2008 à 15:13:22    

Merci mais étant donné que WZCSVC n'est pas un process "normal", il est instancié par "C:\WINDOWS\System32\svchost.exe -k netsvcs"
Il faudrait donc avoir les détails des svhost.exe, les dépendances etc...

Reply

Marsh Posté le 01-07-2008 à 15:22:42    

C'est vrai. Du coup j'ai lu un peu de doc, voici la solution :
 

Code :
  1. strComputer = "."
  2. Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=Impersonate}!\\" & strComputer & "\root\cimv2" )
  3. Set colRunningServices = objWMIService.ExecQuery _
  4.     ("Select State From Win32_Service Where Name='WZCSVC'" )
  5. For Each objService in colRunningServices
  6.     Wscript.Echo objService.State
  7. Next

Reply

Marsh Posté le 01-07-2008 à 15:27:47    

yeahhh, j'étais en train de chercher dans la classe win32_process mais effectivement la classe win32_service a le paramètre !
Merci bien ccp6128 ! depuis le temps que je cherchais à faire ça....

Reply

Marsh Posté le 08-09-2009 à 11:05:20    

Bonjour,
 
J'essaie de faire la meme chose mais avec une vérification de deux services avec le code:

Code :
  1. strComputer = "."
  2. Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=Impersonate}!\\" & strComputer & "\root\cimv2" )
  3. Set colRunningServices = objWMIService.ExecQuery _
  4.     ("Select State From Win32_Service Where Name='WZCSVC'" )
  5. For Each objService in colRunningServices
  6.     Wscript.Echo objService.State
  7. Next


Je n'ai pas trouvé sur internet la bonne syntaxe. Et vous le savez vous ?
 
Merci d'avance.

Reply

Marsh Posté le 08-09-2009 à 11:14:29    

Salut,
 
Ne pourrais tu pas par exemple vérifier les services les uns après les autres, ou y'a t'il une subtilité qui m'échappe ?

Reply

Marsh Posté le 08-09-2009 à 11:40:48    

J'ai réussi à faire ceci:
 

Code :
  1. Const ForAppending = 8
  2. Set objFSO = CreateObject("Scripting.FileSystemObject" )
  3. Set objLogFile = objFSO.OpenTextFile("C:\verif-serv.txt",ForAppending, True)
  4. strComputer = "."
  5. Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=Impersonate}!\\" & strComputer & "\root\cimv2" )
  6. Set colRunningServices = objWMIService.ExecQuery ("Select State From Win32_Service where name = 'spooler'" )
  7. For Each objService in colRunningServices
  8. objLogFile.Write(objService.name & ":" & objService.state)
  9. objLogFile.WriteLine
  10. Next
  11. Set colRunningServices = objWMIService.ExecQuery ("Select State From Win32_Service where name = 'fax'" )
  12. For Each objService in colRunningServices
  13. objLogFile.Write(objService.name & ":" & objService.state)
  14. objLogFile.WriteLine
  15. Next


 
Cela fonctionne bien à présent. Par contre comment faire une boucle de vérification ?
 
Merci encore !!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed