从 Windows 服务调用时 Process.Start 不起作用
Posted
技术标签:
【中文标题】从 Windows 服务调用时 Process.Start 不起作用【英文标题】:Process.Start does not work when called from windows service 【发布时间】:2014-03-24 10:14:27 【问题描述】:在 Windows 8 上,我正在运行 Windows 服务。该服务应该通过
启动一个程序Process.Start(exePath);
但是进程会立即退出 - 甚至 Main 过程中的第一行也没有执行。之前,在 Windows 7 上的同一服务中运行同一进程时,一切正常。
我怎样才能让它再次工作?如何从 Windows 服务正确启动进程?
【问题讨论】:
嗨,即使我也面临同样的问题。我在本地系统帐户下的 Windows 7 系统上运行我的 Windows 服务。这个过程根本没有开始。任何帮助将不胜感激。 【参考方案1】:找到了解决办法。流程必须像这样开始:
ProcessStartInfo info = new ProcessStartInfo(exePath);
info.CreateNoWindow = true;
info.UseShellExecute = false;
Process.Start(info);
由于某些原因,在 SYSTEM 后台创建 shell 窗口时存在权限问题。
【讨论】:
这是您解决问题的方法,但很难回答您提出的问题。你没有提供任何真实的细节,然后给出了一个似乎是基于魔法的答案。没有解释为什么。这是一个自我回答的问答题。这将如何在未来对任何人有用?您可以做的是为某人提供足够的信息来重现该问题。然后你可能会得到一个很好的答案并获得一些理解。就目前而言,您将被留下这个魔法咒语。 我搜索了答案,没有找到合适的。然后感谢链接groups.google.com/forum/#!msg/comp.windows.misc/E93qPCdaV4k/… 我找到了这个解决方案。它是关于 C++ 和一些未知库的链接,解释不是很清楚,唯一(非常)有用的是“CREATE_NO_WINDOW”标志,这导致我找到了这个解决方案,我想分享给其他人,以便更快地找到它。我也希望得到更深入的解释。 你不明白我的意思。这可能,也许,是你的问题的解决方案。但这不是您所问问题的答案,其中不包含真正可操作的细节。根据您提出的问题,任何人将如何将此答案与他们的问题联系起来。也许你应该改进这个问题。否则,在我看来,这是毫无意义的。 不管解释如何,该解决方案都帮助我解决了同样的问题。谢谢弗拉康! 就像这里***.com/a/27997144/4684145 它解决了我解压缩 7zip 存档的问题,谢谢!【参考方案2】:在您的 Process 实例上使用 WaitForExit
方法将指示等待时间过去或进程退出。
See this MSDN link for more.
【讨论】:
进程在大约 12 毫秒内退出。很快。没有代码运行。以上是关于从 Windows 服务调用时 Process.Start 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
System.Diagnostics.Process.Start() 从 Windows 服务调用时无法启动进程