从Windows服务调用时,System.Diagnostics.Process.Start()无法启动进程

时间:2009-01-18 23:54:15

标签: c# .net windows-services

我正在尝试从.NET Windows服务启动外部进程。在过去,我使用了Process.Start()重载,该重载采用可执行路径和命令行字符串。这有效。但是现在我想开始这个过程并让它在特定用户的上下文中运行。所以我称这个版本为Start()

public static Process Start(
    string fileName,
    string userName,
    SecureString password,
    string domain)

但是,当我调用该方法时,我尝试运行的应用程序会生成一个未处理的异常:

The application failed to initialize properly (0xc0000142). Click on OK to terminate the application.

我尝试启动不同的应用程序,它们都生成相同的异常。我已经在Windows服务之外运行代码,应用程序正确启动。

那么有没有办法让它在Windows服务中运行?

4 个答案:

答案 0 :(得分:2)

也许用户必须拥有“作为服务登录”的安全权限。这是通过“本地安全策略”应用程序完成的。和/或“作为批处理作业登录”。

答案 1 :(得分:2)

这与此问题here非常相似。答案通常是由于正在运行该进程的桌面和窗口站的安全问题。有关说明和示例代码,请参阅this article

答案 2 :(得分:1)

这只是一个黑暗的镜头,但也许你可以尝试在交互模式下运行Windows服务。但是,如果可行,则无法在Windows Vista中完成此操作(因为会话0隔离)。

答案 3 :(得分:0)

使用Filemon,看看它是否正在尝试打开配置文件而不是找到它。由于配置格式错误,我曾经遇到过这个错误。