Vielen lieben Dank Euch beiden, für die schnelle Reaktion.
Du bist als User1 angemeldet und benutzt runas um als Admin ein weiteres Programm zu starten?
Genauso siehts aus. Ich habe durch den Hinweis auf
RegOpenCurrentUser mal meine Funktion versucht umzubasteln, aber irgendwie bekomme ich bei User1 und runas Admin immer noch die Werte des Admin. Wo liegt bei mir der Fehler?
Delphi-Quellcode:
function ReadRegistryValue(MyHKey : Byte; RegKey : String; RegValue : String) : String; overload;
var
Reg : TRegistry;
RegOpenCurrentUser: TRegOpenCurrentUser;
hkResult: HKEY;
begin
Result := '';
Reg:=TRegistry.Create;
try
if MyHKey = 1 then
begin
RegOpenCurrentUser := GetProcAddress(GetModuleHandle('ADVAPI32.DLL'), 'RegOpenCurrentUser');
if Assigned(RegOpenCurrentUser) then
if RegOpenCurrentUser(KEY_READ, @hkResult) <> ERROR_SUCCESS then
begin
showmessage('geht nicht!');
exit;
end;
end;
Case MyHKey of
1: Reg.RootKey:= hkResult; //HKEY_CURRENT_USER;
2: Reg.RootKey:= HKEY_LOCAL_MACHINE;
3: Reg.RootKey:= HKEY_CLASSES_ROOT;
end;
Reg.Access := KEY_READ;
if Reg.OpenKey(RegKey, False) then
If Reg.ValueExists(RegValue) then
begin
try
Result := Reg.ReadString(RegValue);
except
Result := '';
end;
end;
finally
Reg.CloseKey;
Reg.Free;
end;
end;