Question

J'ai le code suivant pour mettre fin à un processus, mais je reçois toujours un code d'erreur 2 (accès refusé).

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'MSSEARCH.exe'")
For each objProcess in colProcessList
  wscript.echo objProcess.processid
  intrc = objProcess.Terminate()
  if intrc = 0 then wscript.echo "succesfully killed process" else wscript.echo "Could not kill process. Error code: " & intrc End if
Était-ce utile?

La solution

Il est tout à fait légitime d'obtenir un "accès refusé". pour terminer un programme. Si c'est un service (ce que je suppose que mssearch.exe est), alors il s'exécute probablement en tant que "SYSTÈME". utilisateur, qui a des privilèges plus élevés que même le compte administrateur.

Vous ne pouvez pas vous connecter en tant que compte SYSTEM, mais vous pourriez probablement écrire un service pour gérer d'autres services ...

Autres conseils

En tant qu'utilisateur non privilégié, vous pouvez uniquement mettre fin aux processus que vous possédez. Dans un environnement multi-utilisateur, cela peut vous mordre à la cheville, car WMI renverrait également des processus portant le même nom d’autres utilisateurs, sauf si vous écrivez une requête WQL plus spécifique.

Si votre processus est un service et que votre script s'exécute sous un compte privilégié, vous devrez peut-être prendre "l'itinéraire habituel". pour l'arrêter, par exemple en utilisant WScript.Shell pour appeler net stop ou sc.exe , ou plus élégamment, en utilisant la touche Win32_Service classe:

Set Services = objWMIService.ExecQuery _
               ("SELECT * FROM Win32_Service WHERE Name = '" & ServiceName & "'")

For Each Service In Services
  Service.StopService()
  WSCript.Sleep 2000 ' wait for the service to terminate '
Next

Si vous consultez cette page: http: / /msdn.microsoft.com/en-us/library/aa393907(VS.85).aspx vous verrez que le code d'erreur 2 est un accès refusé au lieu d'un fichier introuvable

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top