尝试使用以下命令将证书文件(xxx.cer)安装到用户的根证书列表中
certutil -addstore -user -f Root .\xxx.cer
导致错误消息
CertUtil: -addstore command FAILED: 0x80070005 (WIN32: 5 ERROR_ACCESS_DENIED)
我正在从提升的管理提示符下运行此命令。尝试通过 mmc-gui 安装证书会导致相同的错误消息。通过
psexec -i -s
作为系统帐户运行它可以工作,但是,当然,证书不在用户的上下文中。
尝试在任何其他电脑上安装证书都可以正常工作,因此文件没问题。
sfc /scannow
也不会出现任何错误。
知道我能做些什么来解决这个问题吗?
问题出在注册表项 Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\SystemCertificates\Root\ProtectedRoots 上,用户无权访问 - 需要读取。由于某种原因,此密钥的访问权限中有一个“未知”的用户 SID。删除它并添加正确的用户解决了问题。
我通过在 certutil.exe 上运行 procmon 发现了这一点。当它尝试读取此注册表项时,这会显示“访问被拒绝”结果。