不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
C#应用程序只允许运行一个实例实现方法
编辑:dnawo 日期:2012-04-25
方法一:通过Mutex实现
方法二:通过判断进程名称及程序路径实现
说明:方法二可通过修改程序文件名进行破解,相比之下,方法一更好。
参考资料
[1].Mutex实现单实例,你真的搞懂了吗:https://www.cnblogs.com/keyrratuff/archive/2009/04/02/1414249.html
复制内容到剪贴板
程序代码

using System;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
//mutex若为内部变量在Release版可能被垃圾回收导致运行一个实例失效
static Mutex mutex;
static void Main(string[] args)
{
bool IsRunning;
mutex = new Mutex(true, "MutexName", out IsRunning);
if (IsRunning)
{
Console.WriteLine("程序正常运行!");
}
else
{
Console.WriteLine("已经运行了一个实例!");
}
Console.ReadKey();
}
}
}
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
//mutex若为内部变量在Release版可能被垃圾回收导致运行一个实例失效
static Mutex mutex;
static void Main(string[] args)
{
bool IsRunning;
mutex = new Mutex(true, "MutexName", out IsRunning);
if (IsRunning)
{
Console.WriteLine("程序正常运行!");
}
else
{
Console.WriteLine("已经运行了一个实例!");
}
Console.ReadKey();
}
}
}
方法二:通过判断进程名称及程序路径实现
复制内容到剪贴板
程序代码

using System;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
if (!RunningInstance())
{
Console.WriteLine("程序正常运行!");
Console.ReadLine();
}
else
{
Console.WriteLine("已经运行了一个实例!");
Console.ReadKey();
}
}
/// <summary>
/// 只运行一个实例
/// </summary>
/// <returns></returns>
public static bool RunningInstance()
{
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)
{
return true;
}
}
}
return false;
}
}
}
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
if (!RunningInstance())
{
Console.WriteLine("程序正常运行!");
Console.ReadLine();
}
else
{
Console.WriteLine("已经运行了一个实例!");
Console.ReadKey();
}
}
/// <summary>
/// 只运行一个实例
/// </summary>
/// <returns></returns>
public static bool RunningInstance()
{
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)
{
return true;
}
}
}
return false;
}
}
}
说明:方法二可通过修改程序文件名进行破解,相比之下,方法一更好。
参考资料
[1].Mutex实现单实例,你真的搞懂了吗:https://www.cnblogs.com/keyrratuff/archive/2009/04/02/1414249.html
评论: 0 | 引用: 0 | 查看次数: 4065
发表评论
请登录后再发表评论!