private void Runsoft()
        {
            string[] ini = this.GetIni(); //得到要检测要启动软件的配置
            while (true)
            {
                string processlist = GetCurProccesslist();
                for (int i = 0; i < ini.Length; i++)
                {
                    string initest = ini[i];
                    string filename = GetFileName(initest).ToLower().Replace(".exe","") ;
                    if (processlist.IndexOf(filename) == -1) //判断是否启动
                    {
                        StratPorcess(initest); //启动软件
                    }
                }
                Thread.Sleep(60000);
            }
        }        /// <summary>
        /// 启动一个程序
        /// </summary>
        /// <param name="filepath"></param>
        private void StratPorcess(string filepath)
        {
            try
            {
                //Process.Start(filepath);
                ProcessStartInfo info = new ProcessStartInfo();
                info.FileName = filepath;
                //info.CreateNoWindow = true;
                info.UseShellExecute = true;
                Process.Start(info);
                //info.
            }
            catch { }
        }        /// <summary>
        /// 根据路径得到文件名
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        private string GetFileName(string path)
        {
            FileInfo ff = new FileInfo(path);           
            return ff.Name;
        }        /// <summary>
        /// 得到进程列表。用 | 线分开
        /// </summary>
        /// <returns></returns>
        private string GetCurProccesslist()
        {
            Process[] process = Process.GetProcesses();
            string psoftname = "";
            foreach (Process p in process)
            {
                psoftname += "|" + p.ProcessName.ToLower();
            }
            return psoftname;
        }        /// <summary>
        /// 读取配置文件
        /// </summary>
        /// <returns></returns>
        private string[] GetIni()
        {
            string inipath = @"C:\a.txt";
            StreamReader sr = new StreamReader(inipath);
            string inistr = sr.ReadToEnd();
            sr.Close();
            sr.Dispose();            string[] spstr ={ "\r\n"};
            return inistr.Split(spstr,StringSplitOptions.RemoveEmptyEntries);
        }
我做了一个系统服务,就是阁段时间去检测我的另外几个软件是否已经运行,如果没有则运行它,
但是我发现,我的服务随着时间的增加内存占有量会越来越达,
还有一个问题是,我用Process.Start(info);去启动外部程序,进程里面有进程了,但是我在桌面上看不到那个软件... 麻烦各位大虾指点哈