Geht es um eine 32-bit-Anwendung auf einem 64-bit-System? Bei Zugriffen auf
HKLM ist dann auch KEY_WOW64_64KEY als Flag anzugeben, und nicht nur KEY_READ.
Habe mit deinem Hinweis etwas gesucht. Mit dem überarbeitetem Code
kommt man schon bis zu '
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\'.
Sobald man tiefer geht bis '
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Wi ndowsUpdate\Auto Update\',
geht es immer noch nicht.
Code:
function RechnerNeustart_nach_WindowsUpdates_ausstehend : boolean; // '
HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired'
var reg : TRegistry;
begin
result:= false;
reg:= TRegistry.Create(KEY_READ OR $0100 ); // KEY_WOW64_64KEY
try
reg.RootKey:= HKEY_Local_Machine;
// reg.RootKey:= HKEY_CURRENT_USER; <- geht
// if reg.KeyExists('\SOFTWARE\Microsoft\Windows\CurrentVersion\') then <- geht
if reg.KeyExists('\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\') then // <- geht NICHT
// if reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\', False) = True then
// if reg.OpenKey('\SOFTWARE\Adobe\', False) = True then <- geht
// if reg.KeyExists('\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired') then
begin
result:= True;
end else begin
end;
finally
reg.Free;
end;
end;