Tôi cố gắng đọc giá trị GUID được lưu trữ dưới dạng giá trị binary
trong đăng ký tại Delphi. Khi tôi đọc nó với BintoHex, nhưng kết quả theo thứ tự ngược lại. Có vẻ như tôi phải hoán đổi byte nhưng tôi nghĩ BinToHex sẽ làm điều đó.Đọc giá trị GUID được lưu trữ trong sổ đăng ký
Tôi đã tham chiếu đến chủ đề này nhưng tôi không thể tìm ra giải pháp phù hợp: how to convert byte array to its hex representation in Delphi Dường như đó là do Eendian ít.
Dưới đây, bạn sẽ nhìn thấy GUID được lưu trữ trong registry
Đây là mã của tôi:
var
s : string;
buffer : pointer;
...
begin
getmem(buffer, 1024*1024);
....
reg.ReadBinaryData(iValueOfregistry, buffer^, 1024*1024);
....
bintohex(pointer(longint(buffer)+14), PChar(s), 32);
Output cho s: 90E24D373F126545916439C4925E467B
GUID nên FOLDERID_Downloads GUID:
{374DE290-123F-4565-9164-39C4925E467B}
Xin giúp
GUID không phải là thứ duy nhất được lưu trữ trong giá trị đăng ký nhị phân. Vì vậy, tôi phải đọc nó trong một bộ đệm và đọc TGUID ở vị trí $ e trong bộ đệm đó. Tôi nghi ngờ một "di chuyển" từ bộ đệm (tại vị trí $ e) để GUID sẽ không làm công việc vì nó là một bản sao byte-to-byte. Điều đó có đúng không? Anh đề nghị gì, David? – user382591
Một 'Di chuyển' sẽ thực hiện công việc một cách hoàn hảo. Chỉ cần blit dữ liệu vào một 'TGUID' và công việc được thực hiện. Nó có thể được thực hiện mà không cần di chuyển bằng cách sử dụng một diễn viên để 'PGUID'. Bản cập nhật mới nhất cho bạn biết cách thực hiện. –
David, bạn là Guru của tôi – user382591