コマンドラインツール CertUtil.exe または CertMgr.exe を使用してルートCA証明書をインストールまたは削除すると、WindowsはユーザーにMessageBox(ルート以外の証明書の場合)を使用して確認を求めます。 CAのもの、この質問は尋ねられません)、現在のユーザーのルートCA証明書ストアでも。
無人の証明書の更新の場合、それは面倒です。
私はWindowsXP、Vista、および7でこの動作を確認しました(Windows Server 2003および2008はまだチェックしていませんが、彼らもこの質問をしていると思います)。
2つの質問があります:
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番目のパラメーターはテキストを指定します。
私のように、nircmdを介してcertutil.exeウィンドウに「yes」で応答する方法を探していた人は、コマンドに従ってください。
C:\Users\<user>\Desktop>nircmdc.exe dlg "certutil.exe" "" click yes execmd certutil.exe -p xxxxx -user -importpfx cert.p12