我正在尝试启动并从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应用程序完美配合。
答案 0 :(得分:0)
当前(或#34; working")目录是一个传统概念,对简单的命令行工具很有用,但最好避免使用。
在这种特殊情况下,看起来您的问题是服务始终以当前目录设置为c:\windows\system32
开始,而您似乎假设当前目录将设置为包含服务可执行文件的目录,就像从资源管理器运行普通应用程序时那样。
您的代码应明确定位包含服务可执行文件的目录,并使用该目录构建子可执行文件的路径。有关详细信息,请参阅this question。
如果子可执行文件还假定当前目录与应用程序目录相同,则可以使用Process.StartInfo.WorkingDirectory
选择将分配给子项的当前目录。