Hallo zusammen,
ich habe ein Problem, um Werte mit OpenKeyReadOnly auf einem 64Bit System laut dieser
Anleitung aus der Code-Library auszulesen. Wenn ich jetzt den folgenden Code so ausführe, funktioniert alles wunderbar :
Delphi-Quellcode:
regKey := 'SOFTWARE\Microsoft\Windows NT\CurrentVersion';
reg := TRegistry.Create(FAccess);
Reg.RootKey:= HKEY_LOCAL_MACHINE;
If Reg.OpenKey(regKey, false) Then
Begin
Result.RegAnwender := Reg.ReadString( 'RegisteredOwner' );
Result.RegFirma := Reg.ReadString( 'RegisteredOrganization' );
Result.ProduktID := Reg.ReadString( 'ProductId' );
If reg.ValueExists( 'CSDVersion') Then
Result.Version:= Result.Version + ' (' + reg.ReadString( 'CSDVersion' ) + ')';
If reg.ValueExists( 'ProductKey') Then
Result.SerialNum:= reg.ReadString( 'ProductKey' ) Else Result.SerialNum:= '';
End;
Hier werden jetzt die richtigen Werte angezeigt und ausgelesen. FAccess wird durch die Function
GetRegAccessMode aus der Anleitung ermittelt. Ersetze ich nun die Zeile 4 durch diese hier :
If Reg.OpenKeyReadOnly(regKey) Then
Dann greift er auf den 64Bit-Teil in der Registry zu, was ich nicht ganz nachvollziehen kann. Warum ist das so ?