14

Windows フィルター ドライバーを手動で展開または登録するにはどうすればよいですか?

警告: この先には、多くの「研究努力の証拠」があります。読みたくない場合は、これ以上読む必要はありません。私は、あなたがすべきこと、MSDN の言うこと、インターネット上の誰かがこれまでに提案したことすべてを試したことを詳細に指摘しただけです。

tl;dr:意図した方法は何ですか?

バックグラウンド

Visual Studio 2013 で開発された 64 ビット ドライバーを 64 ビット Windows マシンに展開するテストを行っています。ドライバーサービスをWindowsに登録して起動したい。

何を試しましたか

  • Visual Studio 2013 ドライバー展開機能

    Visual Studio の機能を使用して、リモート マシンに自動的にデプロイするのが理想的です。残念ながら、うまくいきません ( 「拡張エラーが発生しました」 ) 。

  • 新しいハードウェアの追加ウィザードの使用

    Windows の新しいハードウェアの追加ウィザードを使用するのが理想的です(MSDN ページの「ハードウェアの追加ウィザードを使用してドライバー パッケージをインストールする」を参照してください)。幸いなことに、Windows 7 以降、Microsoft は新しいハードウェアの追加ウィザードをコントロール パネルから削除しました。手動で実行する必要があります。Hdwwiz.exe管理者特権のコマンド プロンプトから. 残念ながら、新しいハードウェアの追加ウィザードを使用しドライバーパッケージを追加インストールすることはできません。

    ここに画像の説明を入力

    ウィザードはこれを認識しているため、ドライバー サービスをインストールすることはできません。

  • SC コマンド ライン ユーティリティ

    sc.exe管理者特権でのコマンド プロンプトからツールを使用して、サービス コントロール マネージャーにドライバー サービスを手動で登録するのが理想的です。

    >sc create MyDriver binPath="C:\Drop\Driver\MyDriver.sys" type=kernel
    >[SC] CreateService SUCCESS
    

    残念ながら、ドライバー ファイルに有効なデジタル署名があっても、次のようになります。

    ここに画像の説明を入力

    Windows はドライバーのインストールを拒否します。

    ここに画像の説明を入力

  • OSR のドライバー ローダー ユーティリティ

    OSR の Driver Loader ユーティリティを使用するのが理想的です。ただし、有効にデジタル署名されたドライバー ファイルを使用しても、ドライバーはインストールされません。

    ここに画像の説明を入力

  • .INF セットアップ ファイル

    理想的には、ドライバ パッケージを展開し、.xml ファイルからインストールしてインストールし.infます。次に、INF を右クリックして、 [インストール] を選択します。しかし、それは機能しません。新しいドライバー サービスを登録しません。

  • DefaultInstallセクションを使用した.INFセットアップ

    .INF理想的には、ファイルをDefaultInstallセクションで使用するだけです。Windows はDefaultInstallセクションを実行するだけです。残念ながら、MSDN は、これをドライバーに使用することは許可されていないと警告しています。

    注:ドライバー パッケージ の INF ファイルには、INF のDefaultInstallセクションを含めることはできません。

    それができない理由は、DefaultInstallにAddServiceディレクティブがないためです。警告を無視してとにかく試しても、機能しません。新しいドライバー サービスは登録されません。

  • DefaultInstall.Services セクションを使用した .INF セットアップ

    MSDN では、DefaultInstall を使用してドライバー サービスを登録しないように警告していますが、無視してこの[DefaultInstall.Services]セクションを使用できます。幸いなことに、実際にドライバー サービスをインストールしようとします。

    ここに画像の説明を入力

    しかし、Windows はドライバーが署名されていないと主張します。

    ここに画像の説明を入力

    実際に登録されているドライバー サービスはありません。

  • SetupAPI InstallHinfSection 関数

    理想的には、SetupAPI を使用して、上記と同等のコマンド ラインを実行できます。

    >RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 C:\Drop\Driver\ipfw.inf
    

    ドライバーがインストールされないことを除いて。関数は正常に戻ります。しかし、Windows はドライバーが署名されていないと判断します。

    ここに画像の説明を入力

  • BCDEDIT を使用して TESTSIGNING を有効にする

    理想的には、昇格したコマンドプロンプトから実行するように指示されている The TESTSIGNING Boot Configuration Optionの指示に従います。

    >Bcdedit.exe -set TESTSIGNING ON
    

    エラーで失敗することを除いて:

    >Bcdedit.exe -set TESTSIGNING ON
    An error has occurred setting the element data.
    The value is protected by Secure Boot policy and cannot be modified or deleted.
    
  • BCDEDIT を使用して DEBUG をオンにします

    理想的には、Installing an Unsigned Driver during Development and Testの指示に従います。これは、昇格したコマンド プロンプトから実行するように指示されています。

    >bcdedit -debug on
    

    エラーで失敗することを除いて:

    >bcdedit -debug on
    An error occurred while attempting to modify the debugger settings.
    The value is protected by Secure Boot policy and cannot be modified or deleted.
    
  • 高度な回復オプションを使用してドライバー署名の強制を無効にする

    理想的には、高度な回復オプションを使用して、ドライバー署名の強制を無効にします。

    ここに画像の説明を入力

    ただし、Windows の起動後もドライバーの署名が有効になっています。

    ここに画像の説明を入力

  • BIOS でセキュアブートを無効にする

    理想的には、この仮想 Hyper-V コンピューターでは、仮想 BIOS で SecureBoot を無効にします。

    ここに画像の説明を入力

    次に、ドライバー署名ポリシーを無効にしてみてください。

そして、これで3日間。マイクロソフトの誰かに説明してもらいたい:

  • 開発中にドライバーをテストする正しい方法だけでなく、
  • しかし、上記の各試みが失敗した理由を詳細に説明するために

適切な方法は何ですか

ランダムなことを何度も (何度も何度も何度も) 試すのではなく、フィルター ドライバー サービスをインストールする正しい方法は何ですか?

ボーナス質問

Microsoft が開発者の生活を楽にすることを拒否するのはなぜですか?

ボーナスおしゃべり

ドライバー ファイルは、有効で信頼できる証明書で署名されています。

ここに画像の説明を入力

.sys ドライバー ファイルに署名する証明書も、ローカル コンピューターの 信頼されたルート証明書ストアにあります。

ここに画像の説明を入力

これが、ドライバー ファイルの署名が有効で信頼できる理由です。

MSDN の任意のページにある使い捨てのコメントには、ローカル マシン ストアの 2 つの場所にテスト証明書を追加する必要があると書かれています。

ドライバー ファイルに署名を埋め込んだり、ドライバー パッケージのカタログファイルに署名したりするために使用されるテスト証明書を、

これは、証明書を別のストアに追加した理由を説明しています。

ここに画像の説明を入力

Windows 10 テクニカル プレビュー、64 ビット

ボーナスリーディング

4

1 に答える 1