daniil98797 |
23-12-2013 07:35 2277115 |
Автоматический запуск процесса, если он закрыт.
Прошу помощи, необходим скрипт, который бы следил за процессом и перезапускал, если он закроется/вылетит.
|
Код:
Option Explicit
Dim strComputer
Dim objSWbemLocator
Dim objSWbemServicesEx
Dim lngProcessID
strComputer = "."
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
Do
If objSWbemServicesEx.Get("Win32_Process").Create("c:\windows\system32\notepad.exe", "c:\", Nothing, lngProcessID) = 0 Then
objSWbemServicesEx.ExecNotificationQuery( _
"SELECT * FROM __InstanceDeletionEvent WITHIN 1 " & _
"WHERE TargetInstance ISA 'Win32_Process' AND " & _
"TargetInstance.Handle = '" & CStr(lngProcessID) & "'").NextEvent
Else
WScript.Echo "Can't execute [%SystemRoot%\system32\notepad.exe]."
WScript.Quit 1
End If
Loop
Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing
WScript.Quit 0
Укажите вместо выделенного путь к Вашему исполняемому файлу. Используйте скрипт для запуска приложения и слежения за ним.
|
daniil98797 |
26-12-2013 01:26 2278646 |
Огромное спасибо, но можно ли сделать отслеживание было по PID или имени процесса? Проблема в том, что процесс, за которым нужно следить и процесс, который нужно запустить в случае закрытия первого отличаются. Простите, в первом сообщении неправильно выразился.
|
Код:
Option Explicit
Dim strComputer
Dim objSWbemLocator
Dim objSWbemServicesEx
Dim lngProcessID
strComputer = "."
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
If objSWbemServicesEx.Get("Win32_Process").Create("c:\windows\system32\notepad.exe", "c:\", Nothing, lngProcessID) = 0 Then
objSWbemServicesEx.ExecNotificationQuery( _
"SELECT * FROM __InstanceDeletionEvent WITHIN 1 " & _
"WHERE TargetInstance ISA 'Win32_Process' AND " & _
"TargetInstance.Handle = '" & CStr(lngProcessID) & "'").NextEvent
If Not objSWbemServicesEx.Get("Win32_Process").Create("c:\windows\system32\calc.exe", "c:\", Nothing, lngProcessID) = 0 Then
WScript.Echo "Can't execute [%SystemRoot%\system32\calc.exe]."
WScript.Quit 2
End If
Else
WScript.Echo "Can't execute [%SystemRoot%\system32\notepad.exe]."
WScript.Quit 1
End If
Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing
WScript.Quit 0
|
Время: 19:31.
© OSzone.net 2001-