Установка/удаление корневого сертификата без CertMgr / CertUtil, просящий у конечного пользователя подтверждение

Когда Вы устанавливаете или удаляете корневой сертификат CA с помощью инструментов CertUtil.exe или CertMgr.exe командной строки, Windows просит у пользователя подтверждение с помощью MessageBox (для сертификатов кроме корневых CA, этот вопрос не задают), даже для корневого хранилища сертификатов CA для текущего пользователя.

Для необслуживаемых обновлений сертификата, который является стычкой.

Я видел это поведение на Windows XP, Vista и 7 (я еще не проверил Windows Server 2003 и 2008, но я предполагаю, что они задают этот вопрос также).

У меня есть два вопроса:

  1. Почему в Windows задается тот вопрос, даже когда Вы устанавливаете/удаляете его от инструмента командной строки?
  2. Как я могу подавить это (кроме наблюдения диалоговых окон, подходящих и отправляющих сообщения Windows для нажатия кнопки "Yes")?

Диалоговые окна подтверждения 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]

- jeroen

2
задан 21.09.2010, 14:20

1 ответ

Самое легкое решение состоит в том, чтобы включить ответ в сценарий как это:

echo Y | CertUtil.exe ....

Этот метод не всегда работает на все программы, таким образом, все еще требуется некоторое тестирование на Вашей стороне.

Для окон сообщения можно использовать nircmd с dlg параметр.
В сценарии можно также использовать встроенную команду timeout /t seconds дать окну сообщения конкретное количество секунд, в которые можно появиться.

Вот извлечение справочного файла:

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

Позволяет Вам взаимодействовать со стандартными диалоговыми окнами и окнами сообщения Windows. Когда диалоговое окно открыто, можно использовать эту команду, чтобы "нажать" ok/cancel/yes/no кнопки или заполнить текстовые поля в диалоговом окне.

Следующая команда выберет ответ 'Yes' для любого диалогового окна вопроса процесса Проводника:
dlg "explorer.exe" "" click yes

Следующая команда выберет ответ 'Cancel' для любого диалогового окна вопроса любого процесса:
dlg "" "" click cancel

Описание параметров:

[Имя процесса]: Указывает процесс, который создал желаемое окно. Можно указать только имя процесса или полный путь процесса. Если этот параметр будет пустой строкой (""), то команда будет выполняться на любом процессе.

[Заголовок окна]: Указывает заголовок окна, что Вы хотите выполнение действия. Если этот параметр будет пустой строкой (""), то команда будет выполняться на любом окне, независимо заголовок окна.

[Действие]: можно указать одну из следующих опций:
щелчок: Нажмите указанную кнопку. Можно указать одно из следующих предопределенных значений (Для стандартных диалоговых окон Windows только!): да, нет, хорошо, отмена, повторная попытка, игнорирует, закрывается, справка. Можно также указать любой идентификатор управления как числовое значение.
settext: Установите текст указанного управления. Первый параметр этого действия указывает идентификатор управления, и второй параметр указывает текст.

5
ответ дан 08.12.2019, 05:53

Теги

Похожие вопросы