我在VS2012中使用c#编写了一个Windows服务。此Windows服务只是监视进程运行与否的任务管理器中的进程。如果没有运行,那么服务将从" C:\ Program Files(x86)\ Microsoft \ myInstalledApp \ myapp.exe"中获取进程exe文件。当我从VS2012测试代码时,下面的代码工作正常。但是在部署之后,它没有正确地调用该过程。
while (true)
{
logClient = Process.GetProcessesByName("myApp");
taskManager = Process.GetProcessesByName("taskmgr");
if (logClient.Length == 0 && taskManager.Length == 1)
{
replaceList.Add("Time", DateTime.Now.ToString());
myProcess.StartInfo.FileName = GetPath();
myProcess.Start();
SendMail(to,cc,subject, body);
}
else if (logClient.Length == 0 && taskManager.Length == 0)
{
myProcess.StartInfo.FileName = GetPath();
myProcess.Start();
}
Thread.Sleep(500);
}
当我从taskmgr手动结束myApp.exe进程时,它重新启动应用程序,当代码从vs2012运行时,应用程序正常工作。在将服务部署并安装到系统之后,我从taskmgr关闭应用程序,但它不像以前那样被Windows服务撤销。 在taskmgr中,当myapp.exe正常运行时,myapp.exe的用户名是myName,当我结束进程myapp.exe时,用户名更改为System。但是myapplication.exe在此之后无法正常工作。