用 Windows 脚本启停和监视应用程序

如果一个程序运行后不会出现在任务管理的进程列表中,那么判断这个程序是否在运行当中该如何做呢?要是直接调用 Windows API 来获取当然是一点问题都没有,只不过需要用编译语言来写,动作大了点。下面介绍直接写 Windows 脚本的方法,据你熟悉而言可以用JS或VBS脚本,在脚本中须用到 WMI 查询。同时也顺带一下用 WMI 创建进程启动后台程序的脚本。


1. 判断后台进程是否在运行,假设应用程序的名称为 UnmiProgram.exe,VBS脚本如下:
 1strComputer = "."    '判断本机用点号表示
 2Set objWMIService = GetObject("winmgmts:" _
 3   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
 4
 5'用 WMI 的查询语言 WQL 查找 MyProgram.exe 应用程序名
 6Set colProcessList = objWMIService.ExecQuery _
 7   ("Select * from Win32_Process Where Name = 'UnmiProgram.exe'")
 8If colProcessList.Count = 0 Then 'Count为零说明 MyProgram.exe 没有在运行
 9   wscript.echo "UnmiProgram.exe is not running"
10else 'Count不为零说明 MyProgram.exe 在运行
11   wscript.echo "UnmiProgram.exe is running, count = " & colProcessList.Count
12End If

没有 UnmiProgram.exe 进程在运行就弹出窗口提示:"UnmiProgram.exe is not running"
有 UnmiProgram.exe 进程在运则弹出窗口并提示程序产生了多少个进程:UnmiProgram.exe is running, count = x"

2. 启动一个后台程序的 VBS 脚本
 1Const HIDDEN_WINDOW = 12   '隐藏窗口
 2strComputer = "."    '判断本机用点号表示
 3Set objWMIService = GetObject("winmgmts:" _
 4   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
 5Set objStartup = objWMIService.Get("Win32_ProcessStartup")
 6Set objConfig = objStartup.SpawnInstance_
 7objConfig.ShowWindow = HIDDEN_WINDOW
 8Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
 9
10'创建 C:\\UnmiProagem.exe 并启动它
11errReturn = objProcess.Create("C:\\UnmiProgram.exe", null, objConfig, intProcessID)

你也可以用下面简单的 WSH 脚本来启动应用程序
1Set shell = createobject("wscript.shell")
2shell.run "C:\\UnmiProgram.exe",12

查找并终止指定进程的 VBS 脚本:
1strComputer = "."  '判断本机用点号表示
2Set objWMIService = GetObject("winmgmts:" _
3   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
4Set colProcessList = objWMIService.ExecQuery _
5   ("Select * from Win32_Process Where Name = 'UnmiProgram.exe'")
6For Each objProcess in colProcessList
7   objProcess.Terminate()
8Next

以上脚本存成 VBS 文件,一般都能直接双击执行,系统已建立好关联,或都用命令 wscript file.vbs 或者 cscript file.vbs。 永久链接 https://yanbin.blog/windows-script-mornitor-app/, 来自 隔叶黄莺 Yanbin's Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。