Entwickler-Ecke
Dateizugriff - Zugriffverletzung in Registry
Sliver - Do 10.07.03 16:43
Titel: Zugriffverletzung in Registry
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure dlldel; var i: Integer; Reg: TRegistry; Values: TStringlist; begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs', False) then begin Reg.GetValueNames(Values); for i := 0 to Values.Count - 1 do if Reg.ReadInteger(Values[i]) = 0 then Reg.DeleteValue(values[i]); end; finally Values.Free; Reg.Free; end; end; |
Wenn ich die Werte des Schlüssels der Variable "Values" übergebe gibt es eine Zugriffsverletzung. Ich habe WIn2k und bin als Admin angemeldet.
cu Sliver
derDoc - Do 10.07.03 17:08
Versuch mal die StringList erst zu erstellen, bevor du etwas hinein schreibst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure dlldel; var i: Integer; Reg: TRegistry; Values: TStringlist; begin Values := TStringList.Create; Reg := TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs', False) then begin Reg.GetValueNames(Values); for i := 0 to Values.Count - 1 do if Reg.ReadInteger(Values[i]) = 0 then Reg.DeleteValue(values[i]); end; finally Values.Free; Reg.Free; end; end; |
Sliver - Do 10.07.03 17:20
Ok, Danke das funtz.
Delphi-Quelltext
1:
| if Reg.ReadInteger(Values[i]) = 0 then |
Ich habe jetzt das Problem das nicht alle "Values" DWORD Einträge sind, sondern auch SZ also String. Wenn ich den Wert (Integer) auslesen will und es ist kein DWORD Eintrag dann gibt es einen Fehler, was ja klar ist. Aber wie kann ich das umgehen?
Delete - Do 10.07.03 19:25
TRegistry.GetDataInfo.
Sliver - Do 10.07.03 20:21
Delphi-Quelltext
1:
| if Reg.GetDataInfo(values[i], rdInteger) then |
Fehler: Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
Was ist hier falsch?
Delete - Do 10.07.03 20:32
Puh. Mal so aus dem Stegreif:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var DataType: TRegDataType; begin ...; Reg.GetDataInfo(values[i], DataType); if DataType = rdInterger then ...; |
Sliver - Do 10.07.03 20:35
Delphi-Quelltext
1:
| Reg.GetDataInfo(values[i], DataType); |
Genau der gleiche Fehler.
Delete - Do 10.07.03 22:05
Sag mal, Sliver, hast du irgendeine Sonderversion von Delphi? Bei mir ist eine Hilfe (F1) dabei. Da steht die Funktionsdeklaration drin. Auch, von welchem Typ der zweite Parameter sein muss. Mauszeiger drauf auf den Begriff "GetDataInfo". Einmal klicken, dann F1 gedrückt ... und kurz lesen. - So faul kann doch keiner sein. :evil:
Aber Luckie meinte wahrscheinlich ohnehin GetDataType.
Sliver - Do 10.07.03 22:26
Warst du zu faul um das ganze Topic durchzulesen na, also ich war nicht zu faul um in der Hilfe nach zu schauen, aber mit GetDataType konnte ich es bewerkstelligen Danke, war ja eigentlich grad in der Hilfe unter dem GetDataInfo. Aber egal.
cu SLiver
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!