Hallo Leute,
ich versuche gerade unter Win7 64Bit, einen Wert unter :
[SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserLis t] zu Lesen.
Das ich ohne Admin-Rechte dort nicht Schreiben kann ist mir klar, aber Lesen sollte doch wohl gestattet sein ?!
Mein Code:
Delphi-Quellcode:
function HiddenUserAccountExist : Boolean;
const
cRegKey = '
SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList';
cKEY_WOW64_64KEY = $0100;
// Notwendig, weil dieses Projekt noch unter D7 "läuft"
var Reg : TRegistry;
begin
Result := False;
Reg := TRegistry.Create(KEY_READ
or cKEY_WOW64_64KEY);
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.Access := KEY_READ
or cKEY_WOW64_64KEY;
// normal zum Test manuell setzen, aber Access-Wert ist davor auch schon derselbe
if Reg.KeyExists(cRegKey)
then begin
if Reg.OpenKeyReadOnly(cRegKey)
then begin
//if Reg.OpenKey(cRegKey,false) then begin // auch OpenKey Variate nützt nichts, denn KeyExists steigt vorher schon mit false aus
Result := Reg.ValueExists('
SomeUserName');
Reg.CloseKey;
end
else begin
OutputDebugString(PChar(SysErrorMessage(GetLastError)));
end;
end
else
OutputDebugString(PChar('
"'+cRegKey+'
" nicht vorhanden'));
// Landet jetzt immer hier, obwohl der Key definitiv existiert ...
finally
Reg.Free;
end;
end;
Habe ich irgendeinen Fehler den ich gerade übersehe ?
Oder ist LOCAL_MACHINE wirklich ohne Adminrechte nicht mehr verfügbar ?
Ich möchte doch "nur" überprüfen, ob ein bestimmer versteckter Benutzeraccount existiert ...
Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.