私のサービスは、WHQL署名付き INF ファイルではなくSetupCopyOEMInf
、Authenticode のインストールを呼び出しています。(0x800B0110)が返され、INF ファイルがインストールされていません。SetupCopyOEMInf
CERT_E_WRONG_USAGE
1 に答える
主なヒントは、次の行によって提供されます。
#E359 署名されていないか、正しく署名されていないファイル「foobar.cat」がブロックされました (サーバーのインストール)。エラー 0x800b0110: 証明書は、要求された使用法に対して有効ではありません。
サーバーのインストールに注意してください。これは、「無人インストール」を表す SetupAPI です。ほとんどの場合、これは、署名済みのデバイス ドライバー (Windows XP では、WHQL 署名のみ) を持っているデバイスを挿入し、自動的にインストールしたときに発生します (受動的な情報バルーンで通知されます)。
Windows XP の時代、Microsoft は、WHQL 以外のドライバーを自動インストールから除外することで、開発者に WHQL 認定のドライバーを奨励していました。つまり、ユーザーがデバイスを接続すると、ドライバーの準備ができていても (ドライバー ストアなどで)、"新しいハードウェアの追加" ウィザードが表示されます。これは、いわゆる署名スコアと関係があります。
ユーザーはポリシーを適用して署名の失敗を無視できますが、それは「クライアント インストール」(つまり、対話型) にのみ適用されます。それにもかかわらず、Windows XP での「サーバーのインストール」は絶望的に WHQL を要求します (*)。
私の場合の回避策は、通常のプロセスから呼び出すことでしたSetupCopyOEMInf
。これにより、次の(成功)メッセージが表示されます。
#E361 署名されていないか、正しく署名されていないファイル "foobar.cat" がインストールされます(Policy=Ignore)。エラー 0x800b0110: 証明書は、要求された使用法に対して有効ではありません。
(*) 実際には、WHQL だけでなく、"Windows System Component Verification" (1.3.6.1.4.1.311.10.3.6)
目的を特徴とする証明書であれば何でも構いません。Authenticode 証明書は 1 つではありません。