Einzelnen Beitrag anzeigen

Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#1

Registry lässt sich nicht lesen (rdUnknown) -> Typ ermitt

  Alt 14. Jan 2008, 17:10
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

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:
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.
Im Detail geht es mir eigendlich um den Typen da dieser Wert Name eines Übergeodnen Keys ist.
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat