Pergunta

Estou usando uma chamada idêntica para "CryptUnprotectData" (exposta de Crypt32.dll) entre XP e Vista.Funciona bem no XP.Recebo a seguinte exceção quando executo no Vista:

"Decryption failed. Key not valid for use in specified state."

Como esperado, as versões do crypt32.dll são diferentes entre XP e Vista (com o XP na verdade tendo a mais recente, possivelmente como resultado do SP3 ou alguma outra atualização).

Mais especificamente, estou criptografando dados, colocando-os no registro, depois lendo e descriptografando usando "CryptUnprotectData".O UAC está desligado.

Alguém já viu esse antes?

Foi útil?

Solução

O Função CryptUnprotectData a documentação afirma que geralmente só funciona quando o usuário tem as mesmas credenciais de logon do criptografador.

Isso me sugere que talvez a chave esteja vinculada ao token atual do usuário.Já que você mencionou o Vista, isso me faz pensar em UAC e tokens restritos.

Você pode nos mostrar algum código?Você pode nos fornecer mais informações sobre o que está fazendo com os dados - ou seja,você está movendo-o entre processos, usuários ou computadores?

Outras dicas

Legal.Espero que este seja o meu movimento estúpido da semana!;-)

Isso me sugere que talvez a chave está vinculado ao token atual do usuário.

Foi isso.Acontece que eu estava usando dados criptografados de outra máquina (a XP) e tentando descriptografar na máquina Vista.

Como afirma a documentação do MSDN:

Normalmente, apenas um usuário com o mesmo credenciais de logon como o criptografador pode descriptografar os dados.Além disso, A criptografia e a descriptografia devem ser feitas no mesmo computador.

Depois de criptografar novamente os dados na máquina Vista, a descriptografia funciona conforme o esperado.

Obrigado.

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