Estou lutando contra um problema nos últimos dias que não consigo resolver. Eu não sou um administrador, embora eu tenha algum conhecimento sobre algumas tarefas administrativas.
Eu tenho um script do PowerShell que usa o XapSignTool.exe para assinar um pacote .xap. A chave privada e a senha são fornecidas. Quando eu executo o script enquanto estou logado como um usuário no grupo Administradores, ele funciona bem.
Eu também estou executando o serviço de Gerenciamento Remoto do Windows na mesma máquina. De outra máquina Linux, estou usando o protocolo winrm para chamar o script do PowerShell com os parâmetros necessários. Em seguida, a ferramenta XapSignTool.exe, ou especificamente o signtool.exe, usado abaixo, lança um erro:
Error information: "Error: Store::ImportCertObject() failed." (-2146893808/0x80090010)
Procurei o código e descobri o que significa, por exemplo
NTE_PERM
0x80090010
Access denied.
O nome do método ImportCertObject () me faz pensar que a ferramenta tenta importar a chave privada fornecida para o armazenamento de certificados.
O que é interessante é que, se eu executar o script pela primeira vez enquanto estiver conectado e funcionar, as chamadas subseqüentes serão executadas através do trabalho do winrm. Isso me leva a acreditar que o certificado é importado corretamente com um usuário que seja um administrador.
O serviço WRM estava sendo executado na conta do Serviço de Rede, por isso presumi que ele não tem permissões para inserir no Armazenamento de Certificados. Coloquei a conta NS no grupo Administradores com a esperança de que funcionasse, mas isso não aconteceu. Para testes, eu coloquei \ Everyone no grupo Administradores e a chamada winrm para o script do PowerShell ainda falhava com 'Acesso negado'.
Por que isso? Como posso dar acesso ao armazenamento de certificados a um usuário?
Eu também quero ser capaz de fazer isso para muitos desses certificados, por isso tem que ser automatizado.