Zitat von
Counter909:
registry.getvaluename(listbox...) damit alle namen in der liste sind
aber wenn ich es mit addobject mache, dann muss ich ja eigentlich jeden namen einzelnt einfügen und bestimmen, doch dann haut das ja mit dem entfernen wieder nicht hin, oder ?
Hallo,
du kannst die Werte ja zuerst einer Stringliste hinzufügen und deren Einträge dann mit
AddObject der Listbox hinzufügen.
Delphi-Quellcode:
uses
Registry;
type
TMyKeys = class(TObject)
RootKey: HKEY;
Key, Value: AnsiString;
end;
//Werte Der Listbox hinzufügen
var
Reg: TRegistry;
ValueList: TStringList;
i: integer;
myKeys: TMyKeys;
Key: AnsiString;
RootKey: HKEY;
begin
Key:= 'Software\Microsoft\Windows\CurrentVersion\Run';
RootKey:= HKEY_LOCAL_MACHINE;
ValueList:= TStringList.Create;
try
Reg := TRegistry.Create;
Reg.RootKey := RootKey;
try
if Reg.OpenKey(Key, false) then
begin
Reg.GetValueNames(ValueList);
Reg.CloseKey;
end;
finally
Reg.Free;
end;
for i:= 0 to Pred(ValueList.Count) do
begin
myKeys:= TMyKeys.Create;
myKeys.RootKey:= RootKey;
myKeys.Key:= Key;
myKeys.Value:= ValueList.Strings[i];
ListBox1.Items.AddObject(ValueList.Strings[i], myKeys);
end;
finally
ValueList.Free;
end;
//markierten Wert löschen
var
myKeys: TMyKeys;
Reg: TRegistry;
begin
with Listbox1 do
begin
if ItemIndex> -1 then
begin
if Items.Objects[ItemIndex] is TMyKeys then
begin
myKeys:= Items.Objects[ItemIndex] as TMyKeys;
if MessageDlg(Format('Den Wert "%s" in der Registry löschen?', [myKeys.Value]),
mtConfirmation, [mbYes, mbNo], 0)= mrYes then
begin
Reg := TRegistry.Create;
Reg.RootKey := myKeys.RootKey;
try
if Reg.OpenKey(myKeys.Key, false) then
begin
if Reg.DeleteValue(myKeys.Value) then
begin
if Items.Objects[ItemIndex] is TMyKeys then
TMyKeys(Items.Objects[ItemIndex]).Free;
Items.Delete(ItemIndex);
end;
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
end;
end;
end;
//TMyKeys wieder freigeben
var
loop : integer;
begin
with Listbox1 do
begin
for loop := 0 to pred(Items.Count) do
if Items.Objects[loop] is TMyKeys then
TMyKeys(Items.Objects[loop]).Free;
end;
Edit: Du könntest die Variablen RootKey und Key auch im private Abschnitt deklarieren.