2010-08-23 8 views
4

C++에서 무조건 프로세스를 죽이는 방법이 있습니까?무조건적으로 프로세스 죽이기 (Windows)

는 상관없이 상태이 과정은. 내가이를 TerminateProcess에 대해 알고

없지만, 여전히 실패 할 수 있습니다. 만약 당신이 실패하고 싶지 않다면?

작업 관리자에서 프로세스를 종료하는 경우와 마찬가지로 종료됩니다. 무슨 일이 있어도. 그게 내가 찾는 살인이야.

+2

'TerminateProcess'가 실패하는 권한 실패 이외의 상황을 알고 있습니까? –

+1

@James : 프로세스가 커널 모드 코드를 실행 중이면 프로세스가 종료되지 않을 수 있습니다. 잘못 작성된 드라이버 코드를 추가하면 복구 할 수없는 무한 루프가 발생할 수 있습니다. –

+1

플러그를 당기기 – Default

답변

9

작업 관리자에서 모든 프로세스를 종료 할 수있는 것은 아닙니다. 이는 사용 권한과 프로세스 상태에 따라 다릅니다. winsock에 걸려있는 일부 프로세스는 종료 될 수 없으며 작업 관리자도 중지됩니다.

+5

참. 그리고 일부 프로세스 (특히 RPC 서버와 같은 일부 시스템 서비스)를 죽이면 안정성을 위해 (인위적으로 자동으로) 전체 시스템이 다운됩니다 (30 초 시스템 종료 프롬프트가 나타납니다). 하지만 그 외에도'TerminateProcess'는 Windows에서 가장 좋은 방법입니다 (우연히, 그것은 Task Manager가하는 것입니다). – Piskvor

+0

(sysinternals의) 프로세스 탐색기는 어떻습니까? 나는 심지어 procexpl (현명하지 않음)에서 svchost를 죽였습니다. – Default

+2

프로세스 탐색기는 문서화되지 않은 내부 시스템을 사용합니다 (아마 커널 모드 항목 일지라도 확인하지 않았습니다). 이런 식으로 할 수있는 일이 많지만 프로세스 탐색기는 프로세스를 죽일 수없는 경우가 있습니다 (커널에서 프로세스가 차단 된 경우). svchost는 사용자 모드 프로세스이므로 사용 권한 질문 일뿐입니다. – joekoyote

관련 문제