Visão geral
Tivemos esse problema em alguns servidores virtuais migrados de um provedor "em nuvem" de volta para nosso data center interno. A causa raiz foi permissões para a pasta %SystemRoot%\System32\catroot2
. Havia várias diferenças entre as permissões nessa pasta em um servidor íntegro e as do servidor migrado. Eu acredito que a chave foi que TrustedInstaller
não tinha full access
.
Sintomas adicionais
Olhando para o log do aplicativo no visualizador de eventos, vimos vários erros:
Source: CAPI2
EventId: 257
Text: The Cryptographic Services service failed to initialize the Catalog Database. The ESENT error was: -1032.
Source: ESENT
EventId: 490
Text: Catalog Database (416) Catalog Database: An attempt to open the file "C:\Windows\system32\CatRoot2\{127D0A1D-4EF2-11D1-8608-00C04FC295EE}\catdb" for read / write access failed with system error 5 (0x00000005): "Access is denied. ". The open file operation will fail with error -1032 (0xfffffbf8).
A pista está no texto do erro ESENT; ou seja, emissão de permissões acessando um arquivo sob a pasta catroot2.
Resolução
Conceda à conta do Instalador Confiável um controle total para a pasta catroot2 e seus filhos.
Caso isso não seja suficiente, para comparação, a execução de icacls %systemroot%\system32\catroot2
em um servidor saudável fornece isso:
C:\Windows\system32\catroot2 NT SERVICE\CryptSvc:(F)
NT SERVICE\CryptSvc:(OI)(CI)(IO)(F)
NT SERVICE\TrustedInstaller:(I)(F)
NT SERVICE\TrustedInstaller:(I)(CI)(IO)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
BUILTIN\Administrators:(I)(F)
BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
BUILTIN\Users:(I)(RX)
BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)
CREATOR OWNER:(I)(OI)(CI)(IO)(F)
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE)
NB: Para adicionar o Trusted Installer, você precisará procurar nas contas do computador local nt service\trustedinstaller
.
Após substituir as permissões em catroot2
, certifique-se de clicar na caixa de seleção replace permissions on child objects & containers
para garantir que os itens filhos também tenham suas permissões resolvidas.
Nenhuma reinicialização é necessária para a correção em si (embora, obviamente, quando as atualizações começarem a funcionar novamente, é provável que você precise reinicializá-las).