1

Тема: Как завершить процесс через WSH?

Необходимо скриптом завершить процесс RAdmin'a, пример с форума почему то не завершает процесс, хотелось бы узнать почему, это особеность самого процесса?

Option Explicit
Dim objWMIService,Processes,Process, CommandLine, WshShell
Set WshShell = CreateObject("WScript.Shell")

'Получаем список процессов notepad.exe через WMI
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set Processes = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name='r_server.exe'")

 If Processes.Count => 1 Then            
    For Each Process In Processes        
       CommandLine = Process.CommandLine    
       Process.Terminate
    Exit For
 Next
End If

2

Re: Как завершить процесс через WSH?

прав не хватает, либо процесс иначе зовется

либо так

GetObject("winmgmts:\\.\root\cimv2:win32_service.name='r_server'").stopservice
Я конечно далек от мысли... (с)

3

Re: Как завершить процесс через WSH?

Альтернатива:

taskkill /im r_server.exe

Но если скрипту прав не хватило, так видимо и этому не хватит. Но мало ли, может WMI?
В некоторых ситуациях, например после "очень неудачного" запроса WMI, wmiprvse.exe вешается с очень хорошей нагрузкой процессора (помогает перезагрузка).

4

Re: Как завершить процесс через WSH?

Угу. «taskkill» работает посредством WMI, так что данная команда — едва ли не слово в слово повторяет скрипт из первого поста.

5

Re: Как завершить процесс через WSH?

Учетка с правами администратора. Руками процесс тоже убиваеться легко. Более того пример из которого я взял кусок скрипта прекрасно работает, он убивает процесс а потом снова его запускает...?

6

Re: Как завершить процесс через WSH?

Может увидеть ошибку мешает "on error resume next"? Если есть, отключаем, смотрим что скажет?

7

Re: Как завершить процесс через WSH?

Берём Process Monitor от бывшей Sysinternals, ставим фильтр на создание, запуск и удаление процессов и смотрим, что именно происходит.