Instalando / excluindo certificado raiz sem CertMgr / CertUtil solicitando confirmação ao usuário final

2

Quando você instala ou exclui um certificado CA raiz usando as ferramentas de linha de comando CertUtil.exe ou CertMgr.exe , o Windows solicita ao usuário a confirmação usando um MessageBox (para certificados diferentes de CA raiz, essa pergunta não é feita), mesmo para o armazenamento de certificados de CA raiz para o usuário atual.

Para atualizações de certificado não supervisionadas, isso é um problema.

Eu já vi esse comportamento no Windows XP, Vista e 7 (ainda não verifiquei o Windows Server 2003 e 2008, mas suponho que eles façam essa pergunta também).

Eu tenho duas perguntas:

  1. Por que o Windows está fazendo essa pergunta, mesmo quando você o instala / exclui de uma ferramenta de linha de comando?
  2. Como posso suprimir isso (além de observar as caixas de diálogo chegando e enviar mensagens do Windows para pressionar o botão "Sim")?

As caixas de diálogo de confirmação do MessageBox são assim:

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

e isso:

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

- jeroen

    
por Jeroen Wiert Pluimers 21.09.2010 / 11:13

2 respostas

5

A solução mais fácil é incorporar a resposta no script assim:

echo Y | CertUtil.exe ....

Este método nem sempre funciona para todos os programas, por isso ainda precisa de alguns testes do seu lado.

Para caixas de mensagem, você pode usar nircmd com o parâmetro dlg .
Em um script, você também pode usar o comando interno timeout /t seconds para fornecer à caixa de mensagens o número especificado de segundos para exibição.

Aqui está uma extração do arquivo de ajuda:

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

Allows you to interact with standard dialog-boxes and message-boxes of Windows. When a dialog-box is opened, you can use this command to "click" the ok/cancel/yes/no buttons, or fill the text-boxes in the dialog-box.

The following command will choose the 'Yes' answer for any question dialog-box of Explorer process:
dlg "explorer.exe" "" click yes

The following command will choose the 'Cancel' answer for any question dialog-box of any process:
dlg "" "" click cancel

Parameters description:

[Process Name]: Specifies the process that created the desired window. You can specify only the process name or the full path of the process. If this parameter is empty string("" ), the command will be executed on any process.

[Window Title]: Specifies the title of the window that you want the execute the action. If this parameter is empty string("" ), the command will be executed on any window, regardless the window title.

[Action]: You can specify one of the following options:
click: Click the specified button. You can specify one of the following predefined values (For standard Windows dialog-boxes only !): yes, no, ok, cancel, retry, ignore, close, help. You can also specify any control ID as numeric value.
settext: Set the text of the specified control. The first parameter of this action specifies the ID of the control, and the second parameter specifies the text.

    
por 21.09.2010 / 13:16
0

Para alguém que, como eu, estava procurando como responder com "yes" para a janela certutil.exe via nircmd, siga o comando.

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

    
por 02.10.2018 / 19:39