다음을 통해 공유


WinLogon 디버깅

WinLogon은 대화형 사용자 로그온 및 로그오프 작업을 처리하고 Ctrl+Alt+DELETE의 모든 인스턴스를 처리하는 사용자 모드 프로세스입니다.

커널 디버거에서 NTSD 제어

WinLogon을 디버그하는 가장 쉬운 방법은 NTSD를 사용하고 커널 디버거에서 제어하는 것입니다.

WinLogon 디버깅 사용

사용자 모드 디버거 출력을 커널 디버거로 리디렉션하므로 커널 디버깅 연결을 설정해야 합니다. 디버깅 설정을 참조하세요.

WinLogon에 디버거를 연결하려면 시작 시간부터 프로세스가 디버그되도록 레지스트리를 거쳐야 합니다. WinLogon 디버깅을 설정하려면 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\WinLogon.EXE\디버거 를 다음으로 설정합니다.

ntsd -d -x -g 

-d 옵션은 커널 디버거에 컨트롤을 전달합니다. -x 옵션을 사용하면 디버거가 액세스 위반을 두 번째 예외로 캡처합니다. -g 옵션을 사용하면 첨부 파일 이후에 WinLogon 프로세스가 실행됩니다. Winlogon.exe 시작하기 전에 디버깅을 시작하려는 경우(예: 초기 중단점을 설정하려는 경우) -g 를 추가하지 마세요.

또한winlogon.exe키 아래에 있는 GlobalFlag 값을 " 0x000400F0 "REG_DWORD 설정해야 합니다. 이렇게 하면 힙 검사 및 FLG_ENABLE_KDEBUG_SYMBOL_LOAD 설정됩니다. 그러나 이 두 번째 플래그는 커널 디버거에만 영향을 주기 때문에 디버거를 시작하기 전에 기호도 대상 컴퓨터에 복사해야 합니다.

레지스트리를 변경하려면 다시 부팅해야 합니다.

디버깅 수행

다음 다시 부팅 후 디버거가 자동으로 WinLogon으로 중단됩니다.

진행 방법에 대한 설명은 커널 디버거에서 User-Mode 디버거 제어 를 참조하세요.

기호 경로를 호스트 컴퓨터의 위치 또는 네트워크의 다른 위치로 설정해야 합니다. WinLogon을 디버그할 때 대상 컴퓨터의 네트워크 인증이 제대로 작동하지 않습니다.