Tja, was soll ich sagen: Bei mir liefert D7 unter XP GetDataSize korrekt.
Delphi-Quellcode:
const
KEY = 'Software\Microsoft\Windows NT\CurrentVersion';
VALUE = 'DigitalProductId';
var
buf: array of Byte;
begin
with TRegistry.Create(KEY_READ) do
try
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey(KEY, False) then
begin
SetLength(buf, GetDataSize(VALUE));
if ReadBinaryData(VALUE, buf[0], Length(buf)) = Length(buf)
then Caption := DecodeProductKey(buf)
else Caption := 'rats';
CloseKey;
end;
finally
Free;
end;
end;
Bei Vista kann und mag ich nicht mitreden.