Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Brauche hilfe bei Registry* (https://www.delphipraxis.net/134349-brauche-hilfe-bei-registry%2A.html)

0x33 20. Mai 2009 11:25


Brauche hilfe bei Registry*
 
hi leute, also ich erstell einen registry autostart eintrag wie folgt:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
regist:tregistry;
begin
 regist := TRegistry.create;
with regist do
try
  rootkey := HKEY_LOCAL_MACHINE;
  OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', true);
  writestring('123.exe','C:\WINDOWS\system32\123.exe');
  closekey;
finally
  free;
end;
end;
wie krieg ich den wieder gelöscht? hab schon etliches ausprobiert aber irgendwie löscht der mir den eintrag nicht...
pls help :)

nahpets 20. Mai 2009 11:33

Re: Brauche hilfe bei Registry*
 
Hallo,

Zitat:

Zitat von Delphihilfe
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegistry;
  Val:TStringList;
  I:Integer;
begin
  Reg:=TRegistry.Create;
  try
    Val:=TStringList.Create;
    try
      Reg.RootKey:=HKEY_LOCAL_MACHINE; // Abschnitt in Registrierung
      if not Reg.OpenKey(Edit1.Text,False) then
        ShowMessage('Error opening key')
      else
      begin
        Reg.GetValueNames(Val);
        for I:=0 to Val.Count-1 do

        begin
          ShowMessage(Edit1.Text + Chr(13) +
                      'has an Entry Called '+Val.Strings[I]+Chr(13)+
                      'With a Value of '+Reg.ReadString(Val.Strings[I]));
        end;
        if MessageDlg('Ok to delete the key and lose all these values?'
                     ,Mtinformation,[mbYes,mbNo],0)=mryes then
           Reg.DeleteKey(Edit1.Text);
      end;
    finally
      Val.Free;

    end;
  finally
    Reg.Free;
  end;
end;


0x33 20. Mai 2009 12:18

Re: Brauche hilfe bei Registry*
 
danke, ich werd das dann später ausprobieren, muss vorher noch bisschen was erledigen :)

0x33 22. Mai 2009 15:32

Re: Brauche hilfe bei Registry*
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegistry;
  Val:TStringList;
  I:Integer;
begin
  Reg:=TRegistry.Create;
  try
    Val:=TStringList.Create;
    try
      Reg.RootKey:=HKEY_LOCAL_MACHINE; // Abschnitt in Registrierung
      if not Reg.OpenKey(Edit1.Text,False) then                            //-key wird geöffnet in meinem fall \SOFTWARE\Microsoft\Windows\CurrentVersion\Run
        ShowMessage('Error opening key')
      else
      begin
        Reg.GetValueNames(Val);
        for I:=0 to Val.Count-1 do

        begin
          ShowMessage(Edit1.Text + Chr(13) +
                      'has an Entry Called '+Val.Strings[I]+Chr(13)+
                      'With a Value of '+Reg.ReadString(Val.Strings[I]));
        end;
        if MessageDlg('Ok to delete the key and lose all these values?'
                     ,Mtinformation,[mbYes,mbNo],0)=mryes then
           Reg.DeleteKey(Edit1.Text);
      end;
    finally
      Val.Free;

    end;
  finally
    Reg.Free;
  end;
end;
ok, also öhm mit der prozedur wird ja der key geöffnet und alle einträge per schleife ausgegeben aber am schluss wird doch der komplette run schlüssel gelöscht, ich will ja aber nur einen schlüssel im run löschen :( wie kann ich das machen?

Fridolin Walther 22. Mai 2009 15:45

Re: Brauche hilfe bei Registry*
 
IMHO gibts auch eine Methode DeleteValue. Kann aber grad nicht nachschauen.

0x33 22. Mai 2009 17:50

Re: Brauche hilfe bei Registry*
 
hab jetzt ne lösung, für die die noch sowas suchen:

Delphi-Quellcode:
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  with Reg do
  begin
    RootKey := HKEY_LOCAL_MACHINE;
    OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
    if ValueExists('123.exe') then DeleteValue('123.exe');
    CloseKey;
    Free;
  end;
end;

DP-Maintenance 22. Mai 2009 18:00

DP-Maintenance
 
Dieses Thema wurde von "mkinzler" von "Programmieren allgemein" nach "Windows API / MS.NET Framework API" verschoben.
Zugriff aus Delphi

Christian Seehase 22. Mai 2009 23:17

Re: Brauche hilfe bei Registry*
 
Ich hätte da noch einen kleinen Verbesserungsvorschlag:

Delphi-Quellcode:
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try // Absichern, dass reg auch wieder freigegeben wird
    with Reg do
    begin
      RootKey := HKEY_LOCAL_MACHINE;
      // Wenn der Key nicht geöffnet werden kann gibt es nichts weiter zu tun
      // Open kann, z.B., auf Grund fehlender Rechte fehlschlagen
      // Wenn nicht geschrieben werden darf, nutzt auch der Parameter true nichts
      if not OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True) then exit;
      try // Sicherstellen, dass der Key wieder geschlossen wird
        if ValueExists('123.exe') then DeleteValue('123.exe');
      finally
        CloseKey;
      end;
    end;
  finally
    Free;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz