Вопрос

У меня есть следующий код для завершения процесса, но я все еще получаю код ошибки 2 (доступ запрещен).

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
Это было полезно?

Решение

Это вполне законно, чтобы получить "доступ запрещен" для завершения программы. Если это служба (я предполагаю, что mssearch.exe), то она, вероятно, работает как " SYSTEM " пользователь, который имеет более высокие привилегии, чем даже учетная запись администратора.

Вы не можете войти в систему как учетная запись SYSTEM, но, возможно, вы могли бы написать службу для управления другими службами ...

Другие советы

Как непривилегированный пользователь, вы можете завершать только свои процессы. В многопользовательской среде это может укусить вас за лодыжку, потому что WMI будет возвращать процессы с одинаковыми именами и от других пользователей, если вы не напишите более конкретный WQL-запрос.

Если ваш процесс является службой и ваш сценарий выполняется под привилегированной учетной записью, вам все равно может потребоваться «обычный маршрут»; чтобы остановить его, например, используя WScript.Shell для вызова net stop или sc.exe , или, что более элегантно, используя Класс Win32_Service :

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

Если вы посмотрите на эту страницу: http: / /msdn.microsoft.com/en-us/library/aa393907(VS.85).aspx вы увидите, что код ошибки 2 запрещен, а не файл не найден

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top