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 ビット