Frage

Ich habe den folgenden Code bekam einen Prozess zu beenden, aber ich habe noch einen Fehlercode 2 (Zugriff verweigert) erhalten.

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
War es hilfreich?

Lösung

Es ist durchaus legitim zu bekommen „Zugriff verweigert“ für ein Programm zu beenden. Wenn es einen Service (was ich vermute mssearch.exe ist), dann wird es wahrscheinlich als Benutzer „SYSTEM“ ausgeführt wird, die Privilegien höher als auch dem Administrator-Konto hat.

Sie können nicht als SYSTEM-Konto anmelden, aber Sie könnten wahrscheinlich einen Dienst zur Verwaltung von anderen Diensten schreiben ...

Andere Tipps

Als nicht-privilegierten Benutzer können Sie nur Prozesse beenden Sie besitzen. In einer Mehrbenutzerumgebung dies können Sie in dem Knöchel beißen, weil WMI als auch gleichnamigen Prozesse von anderen Benutzern zurückkehren würde, es sei denn, Sie präziser WQL-Abfrage schreiben.

Wenn Ihr Prozess ist ein Service, und Ihr Skript läuft unter einem privilegierten Konto, können Sie immer noch nehmen müssen „um den regulären Weg“ zu stoppen, zum Beispiel mit WScript.Shell net stop oder sc.exe zu nennen, oder, elegant, mit die Win32_Service Klasse:

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

Wenn Sie auf dieser Seite aussehen: http: / /msdn.microsoft.com/en-us/library/aa393907(VS.85).aspx Sie diesen Fehlercode 2 ist der Zugriff verweigert statt Datei nicht gefunden sehen würde

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top