为了防止用户运行我的应用程序的多个实例,我使用此代码: -
Process[] pArry = Process.GetProcesses();
int nCount = 0;
foreach (Process p in pArry)
{
string ProcessName = p.ProcessName;
ProcessName = ProcessName.ToLower();
if (ProcessName.CompareTo("myApp") == 0)
{
nCount++;
}
}
if (nCount > 1)
{
MessageBox.Show(AppAlreadyRunning,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
Process.GetCurrentProcess().Kill();
}
Run Code Online (Sandbox Code Playgroud)
但正如我们所知,如果更改exe名称,进程名称会更改.因此,如果用户将"myApp.exe"更改为"UserApp.exe",则此修补程序将无效!有什么出路吗?
我在VS2010中使用C#.谢谢!
这是一个非常简单的过程.调用此函数将返回一个包含所需信息的流程类.
Process.GetCurrentProcess()
Run Code Online (Sandbox Code Playgroud)
这是给你的一些代码.
Process[] pArry = Process.GetProcesses();
foreach (Process p in pArry)
{
if (p.Id == Process.GetCurrentProcess().Id)
continue;
string ProcessName = p.ProcessName;
if(ProcessName == Process.GetCurrentProcess().ProcessName)
{
MessageBox.Show(AppAlreadyRunning,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error)
SetForegroundWindow(p.MainWindowHandle);
Application.Exit();
}
}
Run Code Online (Sandbox Code Playgroud)