Как непривилегированный пользователь, вы можете завершать только свои процессы. В многопользовательской среде это может укусить вас за лодыжку, поскольку 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