Pergunta

Eu escrevi um monte de testes de unidade para cobrir a leitura/escrita do Registro do Windows. Eles usam o Cregkey API ATL.

Eles funcionaram bem na minha máquina de mesa do XP Pro, mas quando os testes foram executados na máquina de construção - um servidor Windows 2008 X64 - os testes falham com ERROR_ACCESS_DENIED Ao tentar criar uma chave via Crio.

O usuário que está conectado à máquina de construção pertence ao grupo administrador.

O Google traz à tona uma lista de como criar um registro no bloco de notas e o MSDN continua me dando páginas ausentes quando clico nos links.

O que preciso saber é o que preciso fazer, permitindo que os testes passem ao executar no servidor? Eu acho que isso requer atributos de segurança, mas nunca me aprofui nisso, então não sei por onde começar. Qualquer ajuda seria apreciada.

Foi útil?

Solução

Os dias dos programas modificando ou criando as chaves do registro global acabam. Ele ainda funciona na sua caixa XP porque você faz login como administrador. Vista, Win7 e Windows 2008 têm UAC para impedir que qualquer um (ou seja, malware) mexe com o registro, mesmo quando conectado com uma conta de administrador.

Você pode adicionar um manifesto ao seu programa para invocar o prompt da UAC, mas isso é totalmente pouco prático para testes de unidade. Retrabalhe seu teste de unidade para gravar no HKEY_CURRENT_USER Hive. A mesma consideração provavelmente se aplica ao programa para o qual você escreveu os testes.

Outras dicas

Não basta ser conectado como administrador; Seu programa precisa ser executado com privilégios administrativos (ou seja, usando um manifesto).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top