web-dev-qa-db-ja.com

CertMgr / CertUtilがエンドユーザーに確認を求めずにルート証明書をインストール/削除する

コマンドラインツール CertUtil.exe または CertMgr.exe を使用してルートCA証明書をインストールまたは削除すると、WindowsはユーザーにMessageBox(ルート以外の証明書の場合)を使用して確認を求めます。 CAのもの、この質問は尋ねられません)、現在のユーザーのルートCA証明書ストアでも。

無人の証明書の更新の場合、それは面倒です。

私はWindowsXP、Vista、および7でこの動作を確認しました(Windows Server 2003および2008はまだチェックしていませんが、彼らもこの質問をしていると思います)。

2つの質問があります:

  1. コマンドラインツールからインストール/削除した場合でも、Windowsがその質問をするのはなぜですか?
  2. これを抑制するにはどうすればよいですか(ダイアログボックスが表示され、Windowsメッセージを送信して[はい]ボタンを押す以外)。

MessageBoxの確認ダイアログは次のようになります。

[Root Certificate Store]
Do you want to DELETE the following certificate from the Root Store?
...
[&Yes]  [&No]

この:

[Security Warning]
You are about to install a certificate from a certification authority (CA) claiming to represent:
...
[&Yes]  [&No]

-ジェロエン

最も簡単な解決策は、次のようにスクリプトに回答を組み込むことです。

echo Y | CertUtil.exe ....

この方法は、すべてのプログラムで常に機能するとは限らないため、ユーザー側でテストする必要があります。

メッセージボックスの場合、dlgパラメータとともに nircmd を使用できます。
スクリプトでは、組み込みコマンドtimeout /t secondsを使用して、メッセージボックスに指定された秒数を表示することもできます。

ヘルプファイルの抜粋は次のとおりです。

nircmd.exe dlg [Process Name] [Window Title] [Action] [Parameters]

Windowsの標準のダイアログボックスおよびメッセージボックスを操作できます。ダイアログボックスが開いているときに、このコマンドを使用して、[OK]、[キャンセル]、[はい]、[いいえ]ボタンを「クリック」するか、ダイアログボックスのテキストボックスに入力できます。

次のコマンドは、Explorerプロセスの質問ダイアログボックスに対して「はい」の回答を選択します。
dlg "Explorer.exe" "" click yes

次のコマンドは、任意のプロセスの任意の質問ダイアログボックスに対して「キャンセル」回答を選択します。
dlg "" "" click cancel

パラメータの説明:

[プロセス名]:目的のウィンドウを作成したプロセスを指定します。指定できるのは、プロセス名またはプロセスのフルパスのみです。このパラメータが空のstring( "")の場合、コマンドは任意のプロセスで実行されます。

[ウィンドウタイトル]:アクションを実行するウィンドウのタイトルを指定します。このパラメータが空のstring( "")の場合、コマンドはウィンドウのタイトルに関係なく、任意のウィンドウで実行されます。

[アクション]:以下のいずれかのオプションを指定できます。
クリック:指定したボタンをクリックします。次の定義済みの値のいずれかを指定できます(標準のWindowsダイアログボックスの場合のみ!):yes、no、ok、cancel、retry、ignore、close、help。任意のコントロールIDを数値として指定することもできます。
settext:指定されたコントロールのテキストを設定します。このアクションの最初のパラメーターはコントロールのIDを指定し、2番目のパラメーターはテキストを指定します。

5
harrymc

私のように、nircmdを介してcertutil.exeウィンドウに「yes」で応答する方法を探していた人は、コマンドに従ってください。

C:\Users\<user>\Desktop>nircmdc.exe dlg "certutil.exe" "" click yes execmd certutil.exe -p xxxxx -user -importpfx cert.p12

0
Dexter77