日期:2014-05-18  浏览次数:21168 次

新手提问,怎样让编译好的exe文件只运行一次
c#写好的代码怎样让他只运行一次啊,第二次报错!
请高手们帮写下简单的代码,希望做好注释,谢谢~

------解决方案--------------------
你找的是比较规范的做法了
------解决方案--------------------
Process[] processOnComputer = System.Diagnostics.Process.GetProcessesByName("进程名");
if (processOnComputer.Length > 0)
exe启动起来会有进程,每次判断一下进程,存在了报错,不错在继续。
------解决方案--------------------
C#的mutex好象有问题,在debug里可以正确的限制第2个进程运行,但是在release里是无效的
判断进程名是一个方法
------解决方案--------------------
一个简单的方法是发布exe的时候配合一个valid.txt或者别的名字的文件。程序一启动检查这个文件是不是存在,存在的话就删除文件。。如果不存在,程序就报错退出。因为这个文件只会被删除一次,可以满足LZ的要求吧。
------解决方案--------------------
楼上的 一启动就判断有没有这个文件 没有就直接退出 不会出错的
另外 你意思可能是第一次启动就没有 判断也是那样的

发布的时候肯定跟那个文件一起发布
忘记包含那个文件的话就不是程序的问题了 是人的问题
------解决方案--------------------
一般都是用互斥来解决的
楼主就用你搜到的方法解决吧
------解决方案--------------------
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
string thisProcessName=Process.GetCurrentProcess().ProcessName;
if (Process.GetProcessesByName(thisProcessName).Length > 1)
{
MessageBox.Show("系统程序已在运行,请留意桌面任务栏。", "消息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new tlxForm());
}
}
}