在VBScript中,如果特定服务名称已启动或正在运行,它是否可以查询?如果它运行然后最后执行我的应用程序。所以这就是我想要准备的流程:
VBScript现在等待并继续检查服务名称“NGINX”是否已经启动或运行。
notepad.exe
。notepad.exe
。VBScript可以实现吗?
示例:此行6应仅在服务NGINX正在运行时执行,否则永远不应执行该行。
Option Explicit
Dim ws
set ws = CreateObject("wscript.shell")
Dim a
a = "C:\Program Files (x86)\abcd\kiosk.jar"
ws.run "java.exe -cp " & chr(34) & a & chr(34) & " kiosk", 0, False
答案 0 :(得分:1)
如果你想在系统启动后自动启动nginx,你应该install it as a service。您可以对Win32_Service
类使用WMI查询来检查服务是否正在运行,如果不是,则启动它:
Set wmi = GetObject("winmgmts.//./root/cimv2")
qry = "SELECT * FROM Win32_Service WHERE Name = 'nginx' AND State <> 'Running'"
For Each svc In wmi.ExecQuery(qry)
svc.StartService
Next
要检查服务是否正在运行并运行其他程序,如果是,您可以执行以下操作:
isRunning = False
qry = "SELECT * FROM Win32_Service WHERE Name = 'nginx' AND State = 'Running'"
For Each svc In wmi.ExecQuery(qry)
isRunning = True
Next
If isRunning Then
CreateObject("WScript.Shell").Run "notepad.exe", 0
End If
答案 1 :(得分:1)
无需将其作为服务安装。使用计划任务在启动,登录或其他任何时间启动它。 我喜欢WMI方法,这就是我想要的,但你也可以执行Net Start,读取每一行输出,然后使用If Instr来检查你的服务名称。如果它返回True,则启动您的服务。如果没有,那么它没有。好的一点是,您已经为Wscript.shell创建了连接,因此再次使用Net Start启动服务将是一件简单的事情。 http://www.codeproject.com/Tips/507798/Differences-between-Run-and-Exec-VBScript