PID를 알고 있을때 process kill 방법

2021. 12. 16. 18:15· Windows
반응형
// process가 이미 종료되었는지 확인후 process가 살아 있을경우 CloseMainWindows,kill작업 시작
// 실행한 프로세스 정상종료(CloseMainWindow())를 하고난뒤에도 process가 살아 있을경우
// 강제 kill
public void KillProcess(int pid)
{
    try
    {
        ManagementObjectSearcher procSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_Process WHERE ParentProcessID=" + pid);
        if (procSearcher.Get().Count > 0) { 
            Process proc = Process.GetProcessById(pid);
            proc.CloseMainWindow();
            proc.WaitForExit(100);
            if (!proc.HasExited)
            {
                proc.Kill();
                proc.WaitForExit();
            }
        }
    }
    catch (ArgumentException ex)
    {
        throw ex;
    }
}

// 정확히 알고 있는 pid 프로세스만 kill
public void KillProcess(int pid)
{
    try
    {
        Process proc = Process.GetProcessById(pid);
        if (!proc.HasExited) proc.Kill();
    }
    catch (ArgumentException ex)
    {
        throw ex;
    }
}

// 재귀함수를 이용해서 자식프로세스까지 kill
public void KillProcessChild(int pid)
{
    ManagementObjectSearcher processSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_Process WHERE ParentProcessID=" + pid);
    ManagementObjectCollection processCollection = processSearcher.Get();
    try
    {
        Process proc = Process.GetProcessById(pid);
        if (!proc.HasExited) proc.Kill();
    }
    catch (ArgumentException ex)
    {
        throw ex;
    }
    if (processCollection != null)
    {
        foreach (ManagementObject mo in processCollection)
        {
            KillProcessChild(Convert.ToInt32(mo["ProcessID"]));
        }
    }
}

// 프로세스 전체 검색... 해서 kill 그다지 썩~
public void KillProcessSearch(int pid)
{
    Process[] processes = Process.GetProcesses();
    foreach (Process proc in processes)
    {
        if (proc.Id == pid)
        {
            proc.Kill();
            break;
        }
    }
}
저작자표시 (새창열림)

'Windows' 카테고리의 다른 글

[C#] 근사값 구하기  (0) 2022.02.06
c# 특정시간 기준으로 간격으로 두고 두번 실행하는 방법  (0) 2021.12.17
C# parent & child process PID 찾기  (0) 2021.12.16
ARP Scan Console  (0) 2021.04.03
Color Property  (0) 2021.04.03
'Windows' 카테고리의 다른 글
  • [C#] 근사값 구하기
  • c# 특정시간 기준으로 간격으로 두고 두번 실행하는 방법
  • C# parent & child process PID 찾기
  • ARP Scan Console
zosystem
zosystem
몇 달만 지나도 가물가물해서 만든 곳
zosystem
동방노트
zosystem manage
전체
오늘
어제
  • 분류 전체보기 (278)
    • Linux (90)
      • 기본명령어&팁 (13)
      • 설치 및 셋팅 (16)
      • 네트워크보안 (5)
      • Samba&NFS (6)
      • 모니터링 (3)
      • Apache&nginx (5)
      • MySQL (2)
      • PHP (0)
      • Cloud (29)
      • Shell (1)
      • RAID (1)
      • PLEX (2)
      • Python (5)
      • Docker (2)
    • Windows (22)
    • Windows Server (9)
    • IoT (1)
    • 데이타베이스 (1)
    • 잡다한 개발팁 (19)
    • 개발유틸리티 (8)
    • 컴퓨터관리 (127)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 시놀로지 그누보드5 설치
  • nt530u4e-e3b
  • log syntax highlighting
  • phpmyadmin 접근제어
  • rsync
  • CCTV
  • RDP
  • openmediavault 7
  • OpenMediaVault
  • docker
  • 바탕 화면 아이콘 설정 단축키
  • 그래픽카드 드라이버 이슈
  • fpc케이블
  • IP Camera
  • OMV
  • selenium
  • mysql_connect() error
  • fail2ban
  • amd 드라이버 이슈
  • portainer
  • Printer
  • omv7
  • 프린터
  • synology phpmyadmin
  • 원격 데스크톱 연결
  • ap
  • synology firewall
  • 프린터 방화벽
  • Python
  • PID

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
zosystem
PID를 알고 있을때 process kill 방법
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.