从Windows服务调用时,Process.Start不起作用

fra*_*kon 12 .net c# service process

在Windows 8上,我正在运行Windows服务.该服务应该由一个程序启动

Process.Start(exePath);
Run Code Online (Sandbox Code Playgroud)

但是该过程立即退出 - 即使主程序中的第一行也未执行.以前,当在Windows 7上的同一服务中运行相同的进程时,一切正常.

我该如何让它再次运作?如何从Windows服务正确启动进程?

fra*_*kon 12

找到了解决方案.流程必须像这样开始:

ProcessStartInfo info = new ProcessStartInfo(exePath);
info.CreateNoWindow = true;
info.UseShellExecute = false;
Process.Start(info);
Run Code Online (Sandbox Code Playgroud)

出于某种原因,在SYSTEM的后台创建shell窗口时存在特权问题.

  • 无论解释如何,该解决方案帮助我解决了同样的问题.谢谢frakon! (7认同)
  • 我搜索了答案,没有找到任何合适的答案.然后感谢链接https://groups.google.com/forum/#!msg/comp.windows.misc/E93qPCdaV4k/f1YIwTjwzGcJ我找到了这个解决方案.它是关于C++和一些未知库的链接,解释不是很清楚,唯一(非常)有用的东西是"CREATE_NO_WINDOW"标志,这导致我想要为其他人分享这个解决方案,以便更快地找到它.我也很感激更深入的解释. (6认同)
  • 这是您解决问题的方法,但对您提出的问题几乎没有答案.您没有提供真实的细节,然后提出了一个似乎基于魔法的答案.没有解释为什么.这是一个自我回答的问答问题.这将如何对未来的任何人有用?您可以做的是为某人提供足够的信息来重现问题.那么你可能会得到一个很好的答案并获得一些理解.就目前而言,你将留下这种神奇的咒语. (2认同)