개발 및 테스트 중 서명되지 않은 드라이버 설치

기본적으로 64비트 버전의 Windows Vista 이상 버전의 Windows는 커널이 드라이버 서명을 확인할 수 있는 경우에만 커널 모드 드라이버를 로드합니다. 그러나 이 기본 동작은 초기 드라이버 개발 및 자동화되지 않은 테스트 중에 사용하지 않도록 설정할 수 있습니다. 개발자는 다음 메커니즘 중 하나를 사용하여 유효한 드라이버 서명의 로드 시간 적용을 일시적으로 사용하지 않도록 설정할 수 있습니다. 그러나 플러그 앤 플레이(PnP)에서 설치한 드라이버의 테스트를 완전히 자동화하려면 드라이버의 카탈로그 파일에 서명해야 합니다. Windows Vista 이상 버전의 Windows에는 시스템 관리자가 드라이버 설치 권한을 부여해야 하는 서명되지 않은 드라이버에 대한 드라이버 서명 대화 상자가 표시되므로 드라이버 서명이 필요하므로 필요한 권한이 없는 사용자는 드라이버를 설치하고 디바이스를 사용할 수 없습니다. Windows Vista 이상 버전의 Windows에서는 이 PnP 드라이버 설치 동작을 사용하지 않도록 설정할 수 없습니다.

F8 고급 부팅 옵션 사용

Windows Vista 이상 버전의 Windows는 현재 시스템 세션에 대해서만 커널 모드 드라이버에 대한 로드 시간 서명 적용을 사용하지 않도록 설정하는 F8 고급 부팅 옵션인 "드라이버 서명 적용 사용 안 함"을 지원합니다. 이 설정은 시스템 다시 시작에서 유지되지 않습니다.

커널 디버거를 연결하여 서명 확인 사용 안 함

개발 또는 테스트 컴퓨터에 활성 커널 디버거를 연결하면 커널 모드 드라이버에 대한 로드 시간 서명 적용이 비활성화됩니다. 이 디버깅 구성을 사용하려면 디버깅 컴퓨터를 개발 또는 테스트 컴퓨터에 연결하고 다음 명령을 실행하여 개발 또는 테스트 컴퓨터에서 커널 디버깅을 사용하도록 설정합니다.

bcdedit -debug on

BCDEdit를 사용하려면 사용자는 시스템의 Administrators 그룹의 구성원이어야 하며 관리자 권한 명령 프롬프트에서 명령을 실행해야 합니다. 관리자 권한 명령 프롬프트 창을 열려면 바탕 화면 바로 가기를 만들어 Cmd.exe, 바로 가기를 길게 누르거나 마우스 오른쪽 단추 로 클릭하고 관리자 권한으로 실행을 선택합니다.

커널 디버깅 모드에서 Kernel-Mode 서명 확인 적용

그러나 개발자가 커널 디버거를 연결해야 하지만 로드 시간 서명 적용을 유지해야 하는 경우도 있습니다. 예를 들어 드라이버 스택에 로드에 실패한 서명되지 않은 드라이버(예: 필터 드라이버)가 있는 경우 전체 스택이 무효화될 수 있습니다. 디버거를 연결하면 서명되지 않은 드라이버가 로드될 수 있으므로 디버거가 연결되는 즉시 문제가 사라지는 것처럼 보입니다. 이러한 유형의 문제를 디버깅하는 것은 어려울 수 있습니다.

이러한 문제를 쉽게 디버깅하기 위해 커널 모드 코드 서명 정책은 다음 레지스트리 값을 지원합니다.

HKLM\SYSTEM\CurrentControlSet\Control\CI\DebugFlags

이 레지스트리 값은 REG_DWORD 형식이며 다음 플래그 중 하나 이상의 비트 OR에 따라 값을 할당할 수 있습니다.

0x00000001
이 플래그 값은 드라이버가 서명되지 않은 경우 디버거에 침입하도록 커널을 구성합니다. 그런 다음 개발자 또는 테스터는 디버거 프롬프트에 g 를 입력하여 서명되지 않은 드라이버를 로드하도록 선택할 수 있습니다.

0x00000010
이 플래그 값은 디버거의 존재를 무시하고 서명되지 않은 드라이버의 로드를 항상 차단하도록 커널을 구성합니다.

이 레지스트리 값이 레지스트리에 없거나 이전에 설명한 플래그를 기반으로 하지 않는 값이 있는 경우 커널은 드라이버 서명 여부에 관계없이 항상 커널 디버깅 모드로 드라이버를 로드합니다.

참고 이 레지스트리 값은 기본적으로 레지스트리에 없습니다. 커널 모드 서명 확인을 디버그하려면 값을 만들어야 합니다.