我做的是一个监听某个进程的 服务, 测试用的 qq
 我设置了个 Timer 每隔多少时间 扫描判断进程中是否有qq.exe 
如果没有 将启动qq. 代码如下:
string[] name = new string[2];
name[0] = "QQ"; 
name[1] = "F:\\fuyun\\Bin\\QQ.exe";//qq路径
foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses())
{
     if (name[0] == p.ProcessName)
     {
         return;
     }
}
// 如果qq已经存在就什么都不干
如果不存在就 打开 打开方式有2种
方式一:System.Diagnostics.Process.Start(name[1]);  
方式二:System.Diagnostics.Process pro = new System.Diagnostics.Process();
            pro.StartInfo.UseShellExecute = true;
            pro.StartInfo.CreateNoWindow = false;
            pro.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
            pro.StartInfo.FileName = name[1];
            pro.Start();
            pro.WaitForExit();
出现 的问题是 如果qq没有运行 它会去 运行qq  ,可是 qq的登录窗口出不来 只是在进程中出现了qq的进程
而同样的代码 我用 web 做 却能弹出 登录窗口 ,
问题 2 :我要 用XML 记录要监控的 进程  然后从XML 中读取 可是XML的路径不知道如何才能获得 很多方法在服务项目中都没用。

解决方案 »

  1.   

    设置 windows service 允许与桌面进程交互
      

  2.   

    问题 2 :我要 用XML 记录要监控的 进程 然后从XML 中读取 可是XML的路径不知道如何才能获得 很多方法在服务项目中都没用。
    -----------------------------------------
    路径写在配置文件中
      

  3.   

    不是  要 监控的 进程 信息 写在 XML  文件 中 服务 在XML 文件中获取要监控的进程
      

  4.   

    对啊,app.config不就是个xml文件么,你把要监控的进程放在app.config中
    比如:
    <add key="QQ" value="F:\fuyun\Bin\QQ.exe"/>然后程序中
    private string _QQ = System.Configuration.ConfigurationSettings.AppSettings["QQ"];
      

  5.   

    8楼  我这是 windows 服务 项目  不是Web 项目  .config是 web项目中的配置文件 
    服务项目中是没有的