【问题标题】:starting a process from a .NET windows service从 .NET Windows 服务启动进程
【发布时间】:2010-05-07 16:25:37
【问题描述】:

我正在尝试从 .NET Windows 服务启动控制台应用程序。该服务在 Windows 2008 服务器上运行。

我使用 Process.Start 运行控制台应用程序并且它运行(我可以在任务管理器中看到它),但我从来没有得到进程 ID,并且对 Process.Start 的调用只是挂起。 如果我在我的 Windows 7 机器上运行相同的服务,进程就会运行并且我得到进程 ID 没有问题。

我很困惑..

【问题讨论】:

  • 您是否将 UseShellExecute 设置为 false?你在重定向它的输出吗?

标签: c# .net windows service


【解决方案1】:

我也遇到了同样的问题。对我来说,关键是设置 StartInfo.UseShellExecute = false;

【讨论】:

    【解决方案2】:

    您生成的进程是否有可能试图提示窗口站进行用户输入?在这种情况下它可能会挂起......

    您要启动哪个流程?它是平台/操作系统的一部分(如 cmd.exe)还是自定义的?

    【讨论】:

    • 这是一个自定义进程,开始监听特定的 tcp 端口。它确实在听,但我无法将进程 ID 返回到启动它的 Windows 服务。
    【解决方案3】:

    经过长时间寻找解决方案,我找到了解决我问题的明智之石。

    我制作了一个新的基于 WindowsForm 的程序,使用相同的 Process.Start 命令,然后显示标准的“Windows 警告安全”对话框,这就是它不起作用的原因。

    关闭“用户访问控制”后,Windows 服务正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      相关资源
      最近更新 更多