開発やテストの過程で署名されていないドライバーをインストールすること

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

F8 の詳細ブート オプションを使用する

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

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

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

bcdedit -debug on

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

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

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

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

HKLM\SYSTEM\CurrentControlSet\Control\CI\DebugFlags

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

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

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

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

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