找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31074|回复: 3

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

[复制链接]
发表于 2019-4-15 17:01:05 | 显示全部楼层 |阅读模式
  1. Option Explicit

  2. Main
  3. Sub Main()
  4.     Dim sExeName, sExePath, sSql
  5.     sExeName = "cmd.exe"    '替换掉需要检测的软件名字
  6.     sExePath = "C:\windows\system32\cmd.exe"    '进程路径

  7.     sSql = "Select * From Win32_Process Where Name='{P1}' And CommandLine Like '%{P2}%'"
  8.     sExePath = Replace(sExePath,"","\")
  9.     sSql = Replace(sSql,"{P1}",sExeName)
  10.     sSql = Replace(sSql,"{P2}",sExePath)

  11.     Dim wim, wso, fso, n
  12.     Set wim = GetObject("winmgmts:")
  13.     Set wso = CreateObject("WScript.Shell")
  14.     Set fso = CreateObject("Scripting.filesystemobject")

  15.     Do While n < 2
  16.         If Not fso.FileExists(sExePath) Then Exit Do
  17.         If wim.ExecQuery(sSql).Count = 0 Then
  18.             n = n + 1
  19.             If n = 2 Then
  20.                 wso.Run sDoCmd, 1, True
  21.             End If
  22.             wso.Run """" & sExePath & """", 1, False
  23.             Else
  24.             Exit Do
  25.         End If
  26.         WScript.Sleep 50 * 1000
  27.     Loop

  28. End Sub
复制代码
首先,求解第9行Sql代码中的P1和P2需要替换内容吗?
其次,求解第26行“wso.Run """" & sExePath & """", 1, False”是什么意思?
关于代码的改进需求:
用处:学校机房内,电子教室软件学生端,经常被学生结束进程。
需求:现在需要一个开机自启,自动检测电子教室进程运行状态,如果电子教室进程没有运行,则重启该进程(开机后该进程一直在后台运行),如果该进程第三次被检测到没有运行,则直接重启电脑
发表于 2019-4-15 19:12:27 | 显示全部楼层
object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

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

评分

参与人数 1技术 +1 收起 理由
zuijiutingfeng + 1 感谢管理大大解答,这段代码现在明白了,感 ...

查看全部评分

发表于 2019-4-15 20:49:56 | 显示全部楼层
http://www.bathome.net/thread-47419-1-1.html

可以用这个守护进程
发表于 2019-4-15 22:06:49 | 显示全部楼层

  1. exepath="C:\windows\system32\calc.exe"

  2. Set fso = CreateObject("Scripting.filesystemobject")
  3. Set wmi=GetObject("winmgmts:\\.\root\cimv2")
  4. Set ws = CreateObject("WScript.Shell")

  5. Set exefile=fso.GetFile(exepath)
  6. n=0
  7. Do While True
  8.     Set pros=wmi.ExecQuery("Select * From Win32_Process Where Name='" & exefile.Name & "' And CommandLine Like '%" & replace(exepath,"","\") & "%'")
  9.     If pros.Count =0 Then
  10.         n=n+1
  11.         If n=3 Then
  12.             ws.Run "cmd /c shutdown -f -r -t 0", 1, False
  13.             '有问题,可加QQ956535081及时沟通
  14.             msgbox "互助互利,支付宝扫码头像,感谢赞助"
  15.             WSH.Quit
  16.         End If
  17.         ws.Run """" & exepath & """", 1, False
  18.     End If
  19.     WSH.Sleep 10*1000
  20. Loop
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 02:25 , Processed in 0.018329 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表