C# 通过windows服务运行桌面应用程序

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

我创建了一个windows服务,用于检查特定应用程序是否正在运行,如果该应用程序之前未运行或已被用户关闭,该服务将尝试再次运行

但问题是,该服务在windows 8上正常工作,当我关闭该windows应用程序时,该服务会尝试再次启动,但该服务在windows server 2008 R2中不工作,当我关闭该应用程序时,该服务不会启动该应用程序

有人能帮我吗

我用Dot Net framework 4.5和VS 2013编写了这个应用程序

更新1:

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);
           }
       }