如何在系统启动后检测服务是否为 运行,如果为 运行 则启动我的应用程序?

How to detect after system boot if the service is running, if running then start my apps?

在 VBScript 中是否可以查询特定服务名称(如果它已启动)或 运行?如果它 运行 然后最后执行我的应用程序。所以这是我正在尝试准备的流程:

  1. 系统启动
  2. Windows 8.1 执行启动脚本(VBS)
  3. VBScript 现在等待并继续检查服务名称 "NGINX" 是否已启动或 运行 是否已经启动。

    1. 如果运行,则执行notepad.exe.
    2. 如果不是 运行,则启动服务 "NGINX" 并确保它现在 "RUNNING"。如果现在 "RUNNING" 然后最终执行 notepad.exe.

这可以用 VBScript 实现吗?

示例:只有当服务 NGINX 是 运行 时,才应该执行第 6 行,否则它永远不会执行。

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

如果您希望 nginx 在系统启动后自动启动,您应该 install it as a service. You can use a WMI query against the Win32_Service class 检查服务是否 运行ning,并在未启动时启动它:

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

要检查服务是否 运行ning 和 运行 其他程序,如果是,您可以这样做:

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

无需将其安装为服务。使用计划任务在启动、登录或其他任何时间启动它。 我喜欢 WMI 方法,这正是我想要的,但您也可以执行 Net Start,读取每一行输出,然后使用 If Instr 检查您的服务名称。如果返回 True,则您的服务已启动。如果没有,那么它还没有。好消息是您已经创建了与 Wscript.shell 的连接,因此再次使用 Net Start 启动服务将是一件简单的事情。 http://www.codeproject.com/Tips/507798/Differences-between-Run-and-Exec-VBScript