Windows 服务恢复 - 运行 程序无法运行

Windows service recovery - run a program wont work

我该怎么做?

能想到的我都试过了

为什么它不能与普通的 exe 一起工作?

而且我知道它应该 运行 一个程序,因为它可以正确地重新启动服务。

编辑

Application: test.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Exception

这是我最新的尝试。

脚本有代码

Dim objShell
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Run("iexplore")
Set objShell = Nothing

现在,如果我 运行 cmd 命令

,脚本将打开 Internet Explorer
wscript.exe "C:\asfh.vbs"

服务崩溃时的 "run a program" 恢复选项 运行 指定的可执行文件以与服务相同的方式运行,即它 运行 在会话 0 中(等等)受 session 0 isolation, see also related questions) 影响,并且它 运行 具有与服务相同的安全上下文。

这意味着它不能直接与用户交互(你可以显示一个 GUI,但没有人会看到它)但它也限制了可执行文件或脚本可以做什么。例如,某些 shell API 功能将无法正常工作,除非用户帐户在某个时候已交互登录。在您发布的示例脚本中,脚本本身可能是 运行ning,但无法启动 Internet Explorer,因为 IE 仅设计为在交互式会话中 运行。

只要您将自己限制在基本功能上,它应该都能按预期工作。 (据我所知,没有描述在服务上下文中可以安全使用哪些功能的主列表,但通常很容易猜到。如有必要,您可以求助于试错法!)

另请注意,据我所知,forcedos.exe 已不再出现在 Windows 的现代版本中。如果你想运行一个批处理文件,你可以指定cmd.exe作为应用程序,/c myscript.bat作为命令行参数。