返回列表 发帖

[文件操作] 求大神指导,现需要一个进程保护VBS,已有部分代码,求补全

Option Explicit
Main
Sub Main()
    Dim sExeName, sExePath, sSql
    sExeName = "cmd.exe"    '替换掉需要检测的软件名字
    sExePath = "C:\windows\system32\cmd.exe"    '进程路径
    sSql = "Select * From Win32_Process Where Name='{P1}' And CommandLine Like '%{P2}%'"
    sExePath = Replace(sExePath,"\","\\")
    sSql = Replace(sSql,"{P1}",sExeName)
    sSql = Replace(sSql,"{P2}",sExePath)
    Dim wim, wso, fso, n
    Set wim = GetObject("winmgmts:")
    Set wso = CreateObject("WScript.Shell")
    Set fso = CreateObject("Scripting.filesystemobject")
    Do While n < 2
        If Not fso.FileExists(sExePath) Then Exit Do
        If wim.ExecQuery(sSql).Count = 0 Then
            n = n + 1
            If n = 2 Then
                wso.Run sDoCmd, 1, True
            End If
            wso.Run """" & sExePath & """", 1, False
            Else
            Exit Do
        End If
        WScript.Sleep 50 * 1000
    Loop
End SubCOPY
首先,求解第9行Sql代码中的P1和P2需要替换内容吗?
其次,求解第26行“wso.Run """" & sExePath & """", 1, False”是什么意思?
关于代码的改进需求:
用处:学校机房内,电子教室软件学生端,经常被学生结束进程。
需求:现在需要一个开机自启,自动检测电子教室进程运行状态,如果电子教室进程没有运行,则重启该进程(开机后该进程一直在后台运行),如果该进程第三次被检测到没有运行,则直接重启电脑

object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

object  WshShell 对象。
strCommand  表示要运行的命令行的字符串值。必须包括要传递到可执行文件的所有参数。
intWindowStyle 可选。表示程序窗口外观的整数值。请注意,并非所有程序都使用此信息。
bWaitOnReturn 可选。布尔值,表示在继续执行脚本中的下一条语句之前,脚本是否等待执行完程序。如果设为 true,则在执行完程序后才执行脚本,Run 方法返回由程序返回的任何错误代码。如果设为 false(默认值),则 Run 方法将自动在启动程序后立即返回 0(不是错误代码)。
1

评分人数

    • zuijiutingfeng: 感谢管理大大解答,这段代码现在明白了,感 ...技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

http://www.bathome.net/thread-47419-1-1.html

可以用这个守护进程

TOP

exepath="C:\windows\system32\calc.exe"
Set fso = CreateObject("Scripting.filesystemobject")
Set wmi=GetObject("winmgmts:\\.\root\cimv2")
Set ws = CreateObject("WScript.Shell")
Set exefile=fso.GetFile(exepath)
n=0
Do While True
    Set pros=wmi.ExecQuery("Select * From Win32_Process Where Name='" & exefile.Name & "' And CommandLine Like '%" & replace(exepath,"\","\\") & "%'")
    If pros.Count =0 Then
        n=n+1
        If n=3 Then
            ws.Run "cmd /c shutdown -f -r -t 0", 1, False
            '有问题,可加QQ956535081及时沟通
            msgbox "互助互利,支付宝扫码头像,感谢赞助"
            WSH.Quit
        End If
        ws.Run """" & exepath & """", 1, False
    End If
    WSH.Sleep 10*1000
LoopCOPY
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

返回列表