如何从Windows服务启动并终止进程

时间:2017-02-28 09:37:59

标签: windows-services

我正在尝试启动并从Windows服务中杀死我的wpf应用程序。以下是我用来启动应用程序的内容:

Process.Start("MyApplicationName");

这给我以下例外:

> The system cannot find the file specified;;   at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start(String fileName)

在杀死进程时,它给了我以下异常

> The system cannot find the file specified;;   at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start(String fileName)
   at SSMScoreboardService.Service1.Scoreboard(String status)

虽然同一段代码与Winform应用程序完美配合。

1 个答案:

答案 0 :(得分:0)

当前(或#34; working")目录是一个传统概念,对简单的命令行工具很有用,但最好避免使用。

在这种特殊情况下,看起来您的问题是服务始终以当前目录设置为c:\windows\system32开始,而您似乎假设当前目录将设置为包含服务可执行文件的目录,就像从资源管理器运行普通应用程序时那样。

您的代码应明确定位包含服务可执行文件的目录,并使用该目录构建子可执行文件的路径。有关详细信息,请参阅this question

如果子可执行文件还假定当前目录与应用程序目录相同,则可以使用Process.StartInfo.WorkingDirectory选择将分配给子项的当前目录。