首页 > 代码库 > C#防止程序多次运行

C#防止程序多次运行

经过我的测试,还比较好用,但是有个问题,如果不注销,用另一个用户进入,则程序不能判断出已运行。所以只限于用在单用户环境,还是不太完美。

class Program    {        [STAThread]        static void Main(string[] args)        {            //防止程序多次运行            if (!OneInstance.IsFirst("MyTest"))            {                Console.WriteLine("警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!");                return;            }            Console.WriteLine("正在运行中");            Console.ReadLine();        }    }    public static class OneInstance    {        ///<summary>        ///判断程序是否正在运行         ///</summary>        ///<param name="appId">程序名称</param>        ///<returns>如果程序是第一次运行返回True,否则返回False</returns>        public static bool IsFirst(string appId)        {            bool ret = false;            if (OpenMutex(0x1F0001, 0, appId) == IntPtr.Zero)            {                CreateMutex(IntPtr.Zero, 0, appId);                ret = true;            }            return ret;        }        [DllImport("Kernel32.dll", CharSet = CharSet.Auto)]        private static extern IntPtr OpenMutex(            uint dwDesiredAccess, // access             int bInheritHandle,    // inheritance option             string lpName          // object name             );        [DllImport("Kernel32.dll", CharSet = CharSet.Auto)]        private static extern IntPtr CreateMutex(            IntPtr lpMutexAttributes, // SD             int bInitialOwner,                       // initial owner             string lpName                            // object name             );    }

出处:http://blog.csdn.net/lanman/article/details/3648455

C#防止程序多次运行