检查应用程序是否已经运行,如果c#杀死它

本文关键字:如果 运行 应用程序 是否 检查 | 更新日期: 2023-09-27 17:54:49

我知道Mutex可以用来确定应用程序的另一个实例是否正在运行,但是我可以从Mutex中找到其他实例的PID或名称吗?如果不是从Mutex,是否有另一种方法来杀死其他实例,如果它正在运行。这有点棘手,因为它也必须被绑定到用户,它不应该使用文件来做的伎俩(我知道Mutex创建文件,但那些由。net通过内部函数创建的是OK的)。

请注意,我需要获取其他实例的信息来终止它

感谢阅读!

检查应用程序是否已经运行,如果c#杀死它

你应该这样做:

static void Main(string[] args)
{
  HashSet<string> targets = new HashSet<string>( args.Select( a => new FileInfo(a).FullName ) , StringComparer.OrdinalIgnoreCase ) ;
  foreach ( Process p in Process.GetProcesses().Where( p => targets.Contains(p.MainModule.FileName) ) )
  {
    Console.WriteLine( "Killing process id '{0}' (pid={1}), main module: {2}" ,
      p.ProcessName ,
      p.Id ,
      p.MainModule.FileName
      ) ;
    try
    {
      p.Kill() ;
      Console.WriteLine("...Killed");
    }
    catch ( Exception e )
    {
      Console.WriteLine( "...well, that was unexpected. Error: {1}" , e.Message ) ;
    }
  }
  return;
}
相关文章: