【问题标题】:How to detect after system boot if the service is running, if running then start my apps?如何在系统启动后检测服务是否正在运行,如果正在运行则启动我的应用程序?
【发布时间】:2015-09-03 17:54:03
【问题描述】:

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

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

    1. 如果正在运行,则执行notepad.exe
    2. 如果未运行,则启动服务“NGINX”并确保其现在“运行”。如果现在 "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

【问题讨论】:

标签: windows vbscript


【解决方案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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-06
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多