Hmmm..
Handelt es sich bei deiner Applikation um eine 32 Bit?
Denn dann liest du auf einem 64 Bit Windows bei deiner Reg-Abfrage nicht aus
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion
sondern durch das Redireckt von Windows aus
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\ Windows NT\CurrentVersion
Dort ist das 'InstallDate' dann '0' und somit der 1.1.1970...
Um aus einer 32 Bit App auf den 64 Bit Pfad zuzugreifen musst Du 'KEY_WOW64_64KEY' beim
Reg := TRegistry.Create(KEY_WOW64_64KEY or KEY_ALL_ACCESS);
Verwenden, dann wird auch aus eine 32 Bit App auf 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' zugegriffen.
Hier mal ein Beispiel:
Delphi-Quellcode:
uses
Registry, DateUtils;
const
KEY_WOW64_64KEY = $0100;
KEY_WOW64_32KEY = $0200;
procedure TForm1.Button1Click(Sender: TObject);
var
Reg: TRegistry;
tmpInstallDate : Cardinal;
begin
Reg := TRegistry.Create(KEY_WOW64_64KEY or KEY_ALL_ACCESS);
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('\Software\Microsoft\Windows NT\CurrentVersion', False) then
begin
tmpInstallDate := Reg.ReadInteger('InstallDate');
Reg.CloseKey;
end;
finally
Reg.Free;
end;
Edit1.Text := DateTimeToStr(UnixToDateTime(tmpInstallDate));
end;
'CurrentVersion' hingegen ist in beiden Zweigen identisch..