Autor Beitrag
Sliver
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 10.07.03 16:43 
ausblenden 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);  //hier ist die Zugriffsverletzung
      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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 623

Win Vista Prof
D2007 Prof
BeitragVerfasst: Do 10.07.03 17:08 
Versuch mal die StringList erst zu erstellen, bevor du etwas hinein schreibst:

ausblenden 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;  //Erstellen der StringList
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE; 
    if Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs', False) then begin
      Reg.GetValueNames(Values);  //hier ist die Zugriffsverletzung
      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;

_________________
MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
Sliver Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 10.07.03 17:20 
Ok, Danke das funtz.

ausblenden 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?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 10.07.03 19:25 
TRegistry.GetDataInfo.
Sliver Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 10.07.03 20:21 
ausblenden 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?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 10.07.03 20:32 
Puh. Mal so aus dem Stegreif:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
  DataType: TRegDataType;
begin
  ...;
  Reg.GetDataInfo(values[i], DataType);
  if DataType = rdInterger then
     ...;
Sliver Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 10.07.03 20:35 
ausblenden Delphi-Quelltext
1:
Reg.GetDataInfo(values[i], DataType);					


Genau der gleiche Fehler.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: 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