C# 通过windows服务运行桌面应用程序
我创建了一个windows服务,用于检查特定应用程序是否正在运行,如果该应用程序之前未运行或已被用户关闭,该服务将尝试再次运行 但问题是,该服务在windows 8上正常工作,当我关闭该windows应用程序时,该服务会尝试再次启动,但该服务在windows server 2008 R2中不工作,当我关闭该应用程序时,该服务不会启动该应用程序 有人能帮我吗 我用Dot Net framework 4.5和VS 2013编写了这个应用程序 更新1:C# 通过windows服务运行桌面应用程序,c#,.net,windows-services,C#,.net,Windows Services,我创建了一个windows服务,用于检查特定应用程序是否正在运行,如果该应用程序之前未运行或已被用户关闭,该服务将尝试再次运行 但问题是,该服务在windows 8上正常工作,当我关闭该windows应用程序时,该服务会尝试再次启动,但该服务在windows server 2008 R2中不工作,当我关闭该应用程序时,该服务不会启动该应用程序 有人能帮我吗 我用Dot Net framework 4.5和VS 2013编写了这个应用程序 更新1: Tick = new Timer(); Tick
Tick = new Timer();
Tick.Interval = 3000;
Tick.Elapsed += new System.Timers.ElapsedEventHandler(this.Tick_Elapsed);
Tick.Start();
/////
public void Tick_过去(对象发送方,ElapsedEventArgs e)
{
List applist=新列表();
applist=IOTools.GetApplicationList();
var NotRun=applist.Select(c=>new{AppName=System.IO.Path.GetFileName(c.AppName.ToLower()})
.Except(System.Diagnostics.Process.getProcesss().Select(r=>new{AppName=r.ProcessName.ToLower()+“.exe”}));
var FinallList=来自应用程序列表中的应用程序
在System.IO.Path.GetFileName(app.AppName)上的NotRun中加入nr。ToLower()等于nr.AppName
选择应用程序;
foreach(最终列表中的var应用程序)
{
Process.LaunchChildProcess(app.AppName,app.args);
}
}
在看不到您的代码等的情况下,我们真的无法猜测问题所在。除非您修改,否则这个问题可能会以“太宽”结束。@roryap,Ook,让我把我的代码放进去;-)另外,如果你认为它与不同的windows版本有关,你应该根据进程来标记它。LaunchChildProcess
?检查事件查看器。根据描述,我的第一个怀疑是权限。
public void Tick_Elapsed(object sender, ElapsedEventArgs e)
{
List<IOTools.AppStruct> applist = new List<IOTools.AppStruct>();
applist = IOTools.GetApplicationList();
var NotRun = applist.Select(c => new { AppName = System.IO.Path.GetFileName(c.AppName).ToLower() })
.Except(System.Diagnostics.Process.GetProcesses().Select(r => new { AppName = r.ProcessName.ToLower() + ".exe"}));
var FinallList = from app in applist
join nr in NotRun on System.IO.Path.GetFileName(app.AppName).ToLower() equals nr.AppName
select app;
foreach (var app in FinallList)
{
Process.LaunchChildProcess(app.AppName, app.args);
}
}