- Код: Выделить всё
'connect to WMI
Set objWMIService = GetObject("winmgmts:\\" & "." & "\root\CIMV2")
Me.OUT "========="
Set colListOfServices = objWMIService.ExecQuery("Select * from Win32_Service WHERE Name = 'Mygate'", "WQL", _
wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objService In colListOfServices
Me.OUT objService.Name
For Each prp In objService.Properties_
'собственно PID моего процесса
ProcessId = objService.ProcessId
Me.OUT vbTab & prp.Name & "=" & CStr("" & prp.Value)
Next prp
Next
пытаюсь убить процесс запущенного сервиса:
- Код: Выделить всё
Dim ExitCode As Long
Dim ret As Long
Dim hProcess As Long
'kill
If ProcessId > 0 Then
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, ProcessId)
If hProcess > 0 Then
CloseHandle hProcess
ret = TerminateProcess(hProcess, ExitCode)
End If
End If
в итоге ничего. ret=0, ExitCode=0
чтобы это значило? я где-то ошибаюсь, но никак не пойму где.
ЗЫ
все это делается для убийства зависшего сервиса (StopService недоступен/не отвечает)
PROCESS_ALL_ACCESS и PROCESS_TERMINATE пробовал, но тогда не возвращает hProcess