3742668版主在第二楼的代码有个地方写反了,应该把&&换成||就不会不断地启动软件了。
低级错误,谢谢指正。
谢谢各位.!~ 如 4楼所说的的确占用了不少内存 不敢随便用 2,468K 比我那个不稳定的程序还要多,
其实这种事情用VBS脚本要比用批处理脚本要更适合一些:
Set objShell = CreateObject("WScript.Shell")
strProcess = "cmd.exe"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colMonitoredProcesses = objWMIService. _
ExecNotificationQuery("select * from __instancedeletionevent " _
& "within 1 where TargetInstance isa 'Win32_Process'")
Do While True
Set objLatestProcess = colMonitoredProcesses.NextEvent
If objLatestProcess.TargetInstance.Name = strProcess Then
objShell.Run "c:\windows\system32\cmd.exe"
End If
Loop
保存上面的代码为 进程守护.vbs后运行,它的作用为如果结束cmd.exe进程,则自动启动cmd.exe,当然,前提是cmd.exe已经启动,或者可以把倒数第三行拷贝添加到第二行,则可以每次直接运行该脚本自动运行cmd.exe并进行守护。
注意:如果被守护的进程在1秒内连续被结束的话,将不会自动启动进程,如果对时间有特殊的要求可以修改 within后面的数值,单位为秒,例如within 0.1表示0.1秒,within 5表示5秒。