Domanda

Sto utilizzando una chiamata identica a "CryptUnprotectData" (esposto da Crypt32.dll) tra XP e Vista.Funziona bene in XP.Ottengo la seguente eccezione quando eseguo in Vista:

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

Come previsto, le versioni di crypt32.dll sono diverse tra XP e Vista (XP in realtà ha la più recente, probabilmente come risultato di SP3 o qualche altro aggiornamento).

Più specificamente, sto crittografando i dati, inserendoli nel registro, quindi leggendo e decrittografando utilizzando "CryptUnprotectData".L'UAC è disattivato.

Qualcuno ha già visto questo?

È stato utile?

Soluzione

IL Funzione CryptUnprotectData la documentazione afferma che di solito funziona solo quando l'utente ha le stesse credenziali di accesso del crittografatore.

Ciò mi suggerisce che forse la chiave è legata al token corrente dell'utente.Dato che menzioni Vista, questo mi fa pensare all'UAC e ai token limitati.

Puoi mostrarci qualche codice?Puoi darci maggiori informazioni su cosa stai facendo con i dati, ad es.lo stai spostando tra processi, utenti o computer?

Altri suggerimenti

Carino.Spero che questa sia la mia mossa stupida della settimana!;-)

Questo mi suggerisce che forse la chiave è legata all'attuale token dell'utente.

Questo è tutto.Si scopre che stavo utilizzando dati crittografati da un'altra macchina (quella XP) e provavo a decrittografarli sulla macchina Vista.

Come afferma la documentazione MSDN:

Di solito, solo un utente con le stesse credenziali di accesso del crittografico può decrittografare i dati.Inoltre, La crittografia e la decrittografia devono essere eseguite sullo stesso computer.

Una volta crittografati nuovamente i dati sulla macchina Vista, la decrittografia funziona come previsto.

Grazie.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top