Windows服务恢复 - 运行程序不起作用

时间:2015-01-16 14:28:26

标签: batch-file windows-services

我该怎么做?

我已经尝试了所有我能想到的。

  • 浏览我要运行的.exe文件。
  • 运行bat文件
  • 在程序文本框中编写forcedos.exe,在命令行参数文本框中编写我的bat文件路径

为什么它只能用普通的exe工作?

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

修改

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

enter image description here

这是我最近尝试使其发挥作用。

脚本有代码

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

现在,如果我运行cmd命令,脚本将打开Internet Explorer

wscript.exe "C:\asfh.vbs"

1 个答案:

答案 0 :(得分:4)

服务崩溃时的“运行程序”恢复选项以与服务相同的方式运行指定的可执行文件,即它在会话0中运行(因此受session 0 isolation影响,另请参阅{ {3}})并且它使用与服务相同的安全上下文运行。

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

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

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

相关问题