Provo a leggere un valore GUID memorizzato come valore binary
nel Registro di sistema in Delphi. Quando l'ho letto con BintoHex, ma il risultato è nell'ordine inverso. Sembra che io debba scambiare byte ma ho pensato che BinToHex lo avrebbe fatto.Leggi il valore GUID memorizzato nel registro
ho denominati nel questa discussione, ma non riesco a trovare la giusta soluzione: how to convert byte array to its hex representation in Delphi Sembra che sia a causa di poco Eendian.
Qui di seguito, è possibile vedere il GUID memorizzato nel registro
Ecco il mio codice:
var
s : string;
buffer : pointer;
...
begin
getmem(buffer, 1024*1024);
....
reg.ReadBinaryData(iValueOfregistry, buffer^, 1024*1024);
....
bintohex(pointer(longint(buffer)+14), PChar(s), 32);
Uscita per s: 90E24D373F126545916439C4925E467B
GUID dovrebbe essere FOLDERID_Downloads GUID:
{374DE290-123F-4565-9164-39C4925E467B}
Aiutateci
Il GUID non è l'unica cosa memorizzata nel valore di registro binario. Quindi, devo leggerlo in un buffer e leggere il TGUID alla posizione $ e in quel buffer. Sospetto che una "mossa" dal buffer (alla posizione $ e) al GUID non faccia il lavoro perché è una copia da byte a byte. È vero? Cosa suggerisci, David? – user382591
A 'Move' farà il lavoro perfettamente. Basta mescolare i dati su un 'TGUID' e il lavoro è finito. Può essere fatto senza muovere usando un cast per 'PGUID'. L'ultimo aggiornamento mostra come. –
David, tu sei il mio Guru – user382591