using System.Diagnostics; Process current = Process.GetCurrentProcess(); Process[] processes = Process.GetProcessesByName(current.ProcessName); foreach (Process process in processes) { if (process.Id != current.Id) { if (process.MainModule.FileName == current.MainModule.FileName) { MessageBoxEx.Show("程序已经运行!", Application.ProductName,MessageBoxButtons.OK, MessageBoxIcon.Exclamation); //这里必须用kill杀死刚开启的进程; //如果用Application.Exit();虽然不会报错,但它并不会关闭程序; //如果是用this.close(),虽然可以关闭重新开启的程序,但是系统会报错; current.Kill(); } } }