在C#中识别自己的进程名称

Swa*_*and 4 c# process

为了防止用户运行我的应用程序的多个实例,我使用此代码: -

 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#.谢谢!

Cra*_*ite 7

这是一个非常简单的过程.调用此函数将返回一个包含所需信息的流程类.

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)