[C#] .exe 파일 이름으로 일부 프로세스 종료

C # .NET 또는 C ++에서 .exe 파일 이름을 검색하여 일부 활성 프로세스를 어떻게 종료 할 수 있습니까?



답변

빠른 답변 :

foreach (var process in Process.GetProcessesByName("whatever"))
{
    process.Kill();
}

(프로세스 이름에서 .exe는 제외)


답변

내 솔루션은 모든 프로세스를 나열 하기 위해 Process.GetProcess () 를 사용 하는 것입니다.
원하는 프로세스를 포함하도록 필터링하면 Process.Kill () 메서드를 실행 하여 중지 할 수 있습니다.

var chromeDriverProcesses = Process.GetProcesses().
    Where(pr => pr.ProcessName == "chromedriver"); // without '.exe'

foreach (var process in chromeDriverProcesses)
{
     process.Kill();
}

최신 정보:

( Async Enumerables ) async의 유용한 최근 방법으로 접근 방식 을 사용하려면 다음을 확인하십시오.C# 8

const string processName = "chromedriver"; // without '.exe'
await Process.GetProcesses()
             .Where(pr => pr.ProcessName == processName)
             .ToAsyncEnumerable()
             .ForEachAsync(p => p.Kill());

참고 : async메서드를 사용 한다고해서 항상 코드가 더 빨리 실행되는 것은 아니지만 적어도 CPU 시간을 낭비하지 않고 작업을 수행하는 동안 포 그라운드 스레드가 중단되는 것을 방지합니다. 어쨌든 원하는 버전을 생각해야합니다.


답변

를 사용 Process.GetProcesses()하여 현재 실행중인 프로세스를 가져온 다음 프로세스를 종료 할 수 있습니다 Process.Kill().


답변

프로세스 ID ( PID) 가있는 경우 다음과 같이이 프로세스를 종료 할 수 있습니다.

Process processToKill = Process.GetProcessById(pid);
processToKill.Kill();


답변

MS Word의 특정 인스턴스를 죽일 수 있습니다.

foreach (var process in Process.GetProcessesByName("WINWORD"))
{
    // Temp is a document which you need to kill.
    if (process.MainWindowTitle.Contains("Temp"))
        process.Kill();
}


답변

public void EndTask(string taskname)
{
      string processName = taskname.Replace(".exe", "");

      foreach (Process process in Process.GetProcessesByName(processName))
      {
          process.Kill();
      }
}

//EndTask("notepad");

요약 : 이름에 .exe가 포함되어 있어도 프로세스가 종료됩니다. “프로세스 이름에서 .exe를 제거”할 필요가 없습니다. 100 % 작동합니다.


답변