![]() |
Registry lässt sich nicht lesen (rdUnknown) -> Typ ermitt
Hallo :)
ich versuche unter Xp Pro Sp2 einen RegKey auszulesen dessen Type unbekannt ist (rdUnknown). Nur geht - bzw ließt es irgendwie nicht - sonst würde ich ja nicht Posten :mrgreen: Soweit so gut... versuche habe ich es mit GetDataSize & ReadBinaryData. Auch wenn es nicht zur Exception kommt bleibt der Buffer leer da GetDataSize -1 zurückgibt so das die Schleife eh nie durchlaufen würde. Auch wenn ich diesen Wert mit 255 initalisiere kommen am Ende nur Nullen raus (ohne Einsen dazwischen). Wiseo ? Fehlende Priviliegen etc. können es ja nicht sein, da das das Programm eh nur mit Systemrechten läuft (bzw Zugriff auf dem Key bekommt).
Delphi-Quellcode:
Im Detail geht es mir eigendlich um den Typen da dieser Wert Name eines Übergeodnen Keys ist.
program RegTest;
{$APPTYPE CONSOLE} uses SysUtils, Registry, WIndows, Classes; const Key = '\SAM\SAM\Domains\Account\Users\Names\'; Value = '@'; // for empty / default value var Reg: TRegistry; slKeys, slValues: TStringList; I, X, J, k, iSize: Integer; P: PChar; begin Reg := TRegistry.Create; Reg.RootKey := WIndows.HKEY_LOCAL_MACHINE; if Reg.OpenKeyReadOnly(Key) then begin writeln('successfull opening'); slKeys := TStringList.Create; Reg.GetKeyNames(slKeys); for I := 0 to slKeys.Count-1 do begin slValues := TstringList.Create; if Reg.OpenKeyReadOnly(Key + slKeys.Strings[I]) then begin Reg.GetValueNames(slValues); for X := 0 to slValues.Count-1 do begin writeln('lese value in ' + slKeys.Strings[I]); J := Reg.GetDataSize(Value); GetMem(p, j); Reg.ReadBinaryData(Value, p^, J); for k := 0 to j - 1 do writeln(IntToHex(Byte(p[k]), 2)); FreeMem(p, j); end; slValues.Free; end; end; slKeys.Free; end else writeln('error'); Reg.Free; readln; end. |
Re: RegValue lässt sich nicht lesen (rdUnknown)
wenn du wirklich den obengeschrieben schlüssel lesen oder schreiben willst (egal was) wirst du immer ne fehlermeldung in windows bekommen, da dieser schlüssel durch windows geschützt ist...
|
Re: RegValue lässt sich nicht lesen (rdUnknown)
Wie bereits geschrieben: Fehlende Priviliegen etc. können es ja nicht sein, da das das Programm eh nur mit Systemrechten läuft (bzw Zugriff auf dem Key bekommt).
AT %time /interactive delphi32.exe AT %time /interactive regedit.exe hilft ganz gut :) |
Re: Registry lässt sich nicht lesen (rdUnknown) -> Typ er
das ist alles irgendwas für die windows passwörter, diese werden in einer sam datei angelegt (natürlich verschlüsselt) und windows schützt diese dateien, indem jegliche zugriffsrechte auf sie gesperrt werden!! nur windows selber kann die dateine lesen oder in sie schreiben!!
ich denke mal das dieser ordner (zumindest sieht es ganz danach aus, denn ich habe bei vista auch keinerlei zugriffsrechte mit nem admin account auf den ordner) auch von windows geschützt wird, und die zusammenhänge durch den gleichen namen naheliegend sind, nur leider kann ich dir nicht genau sagen was es mit dem registry ordner wirklich auf sich hat!! aber was willst du denn in dem ordner überhaupt??? |
Re: Registry lässt sich nicht lesen (rdUnknown) -> Typ er
WinDOS speichert die Kennwörter in Dateien Windows hingegen kennst die Registry. Und dann werden keine Kennwörter gespeichert sodneren deren Hashes (LM/NTLM/NTLM2). Mit der SAM dem Security Account Manger wird dies lediglich verwaltet.
Ich versuche die Hashes aus der Registry zu holen. (Ich brauch das für mein Admin -> Programm) Liegen im bennaten Key. Das Problem, ich muss erst die Kontentyp aus der Reg holen ist als RegistryType (zb 0x1AF) gespeichert. Mit dem ausgelesenen kann ich eine ebene Höher im Key in den Order wescheln und dort den Hash lesen. Übrigens: Unter Vista hat man die Sicherheitslücke via AT sich Systemrechte zuzulegen abgeschafft :) Dumm nur das man jetzt (was unter XP meines Wissens nicht ging, ein belibiges Programm zB cmd.exe als service eintagen und dies auch noch Interactiv starten - Aber das ist ein anderes Thema.) |
Re: Registry lässt sich nicht lesen (rdUnknown) -> Typ er
Moin Harry,
dann wirst Du, wohl oder übel, einen Dienst schreiben müssen, der den Zugriff erledigt, und über Dein Hauptprogramm gesteuert wird. |
Re: Registry lässt sich nicht lesen (rdUnknown) -> Typ er
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Christian Seehase,
bleibt aber immer noch die Frage wie ich den Type des Values als String bekomme. |
Re: Registry lässt sich nicht lesen (rdUnknown) -> Typ er
Moin Harry,
wie's aussieht korrespondiert diese Angabe ja immer mit einem Key, wobei man damit dann den Key zu einem Userkonto ermitteln kann. Wenn Du den partout als String haben willst, musst Du wohl IntToHex nehmen. [EDIT] Wenn Du mit Bereichen arbeiten willst, mit denen man, als Anwender, eigentlich gar nicht direkt in Berührung kommen soll, solltest Du mal in Erwägung ziehen, auf TRegistry zu verzichten, und direkt mit den API-Funktionen zu arbeiten. [/EDIT] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz