開発中およびテスト中の署名されていないドライバーのインストール

既定では、64 ビット バージョンの Windows Vista 以降のバージョンの Windows では、カーネルがドライバー署名を確認できる場合にのみ、カーネル モード ドライバーが読み込まれます。 ただし、この既定の動作は、初期のドライバー開発時および非自動化テストで無効にすることができます。 開発者は、次のいずれかのメカニズムを使用して、有効なドライバー署名の読み込み時の適用を一時的に無効にすることができます。 ただし、プラグ アンド プレイ (PnP) によってインストールされたドライバーのテストを完全に自動化するには、ドライバーの カタログ ファイル に署名する必要があります。 Windows Vista 以降のバージョンの Windows では、ドライバーのインストールを承認するシステム管理者を必要とする署名されていないドライバーのドライバー署名ダイアログ ボックスが表示されるため、ドライバーの署名が必要です。これにより、必要な特権を持たないユーザーがドライバーをインストールしてデバイスを使用することを防いでいます。 この PnP ドライバーのインストール動作は、Windows Vista 以降のバージョンの Windows では無効にできません。

F8 高度なブート オプションを使用

Windows Vista 以降のバージョンの Windows では、現在のシステム セッションに対してのみカーネル モード ドライバーの読み込み時署名の適用を無効にする F8 高度なブート オプション ("ドライバー署名の強制を無効にする" ) がサポートされています。 この設定は、システムの再起動後は保持されません。

カーネル デバッガーをアタッチして署名の検証を無効にします

開発またはテスト コンピューターにアクティブなカーネル デバッガーをアタッチすると、カーネル モード ドライバーの読み込み時署名の適用が無効になります。 このデバッグ構成を使用するには、開発またはテスト コンピューターにデバッグ コンピューターをアタッチし、次のコマンドを実行して開発またはテスト コンピューターでカーネル デバッグを有効にします。

bcdedit -debug on

BCDEdit を使用するには、ユーザーはシステムの 管理者 グループのメンバーであり、管理者特権のコマンド プロンプトからコマンドを実行する必要があります。 管理者特権のコマンド プロンプト ウィンドウを開くには、Cmd.exe へのデスクトップ ショートカットを作成し、Cmd.exeショートカットを選択して長押し (または右クリック) し、[管理者として実行] を選択します。

カーネル デバッグ モードでのカーネルモードの署名の検証の適用

ただし、開発者がカーネル デバッガを接続する必要がある一方で、ロード時の署名の強制を維持する必要がある状況もあります。 たとえば、ドライバー スタックに、読み込みに失敗する署名されていないドライバー (フィルター ドライバーなど) があり、スタック全体が無効になる場合があります。 デバッガーをアタッチすると、署名されていないドライバーを読み込めるので、デバッガーがアタッチされるとすぐに問題が消えます。 この種の問題のデバッグは困難な場合があります。

このような問題のデバッグを容易にするために、カーネル モード コード署名ポリシー では、次のレジストリ値がサポートされています。

HKLM\SYSTEM\CurrentControlSet\Control\CI\DebugFlags

このレジストリ値は REG_DWORD型であり、次の 1 つ以上のフラグのビットごとの OR に基づいて値を割り当てることができます。

0x00000001
このフラグ値は、ドライバーが署名されていない場合にデバッガーに分割するカーネルを構成します。 その後、開発者またはテスト担当者は、デバッガープロンプトで「g」と入力して、署名されていないドライバーを読み込むことができます。

0x00000010
このフラグ値は、デバッガーの存在を無視し、常に署名されていないドライバーの読み込みをブロックするようにカーネルを構成します。

このレジストリ値がレジストリに存在しない場合、または前に説明したフラグに基づいていない値がある場合、カーネルは、ドライバーが署名されているかどうかに関係なく、常にカーネル デバッグ モードでドライバーを読み込みます。

注 : このレジストリ値は、既定ではレジストリに存在しません。 カーネル モード署名検証をデバッグするには、値を作成する必要があります。