Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm aus Autostart entfernen (https://www.delphipraxis.net/98662-programm-aus-autostart-entfernen.html)

T.E. 30. Aug 2007 16:20


Programm aus Autostart entfernen
 
Hallo

Ich benutze folgenden Quellcode um ein Programm in den Autostart zu schreiben:
Delphi-Quellcode:
type
 TAutorunKind = (akUserRun, akUserRunOnce, akRun, akRunOnce, akRunServices, akRunServicesOnce);

uses
 Registry;

function CreateAutorunEntry(const AName, AFilename: String; const AKind: TAutorunKind): Boolean;
var
 Reg: TRegistry;
begin
 Result:=False;
 Reg := TRegistry.create;
 try
   if (AKind=akUserRun) or (AKind=akUserRunOnce) then
     Reg.Rootkey:= HKEY_CURRENT_USER
   else
     Reg.RootKey := HKEY_LOCAL_MACHINE;

   case AKind of
     akRun, akUserRun       : Result:=Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
     akRunOnce, akUserRunOnce: Result:=Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce', True);
     akRunServices          : Result:=Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunServices', True);
     akRunServicesOnce      : Result:=Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunServicesOnce', True);
   end;
   Reg.WriteString(AName, AFilename);
 finally
   Reg.Free;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 CreateAutorunEntry(Application.Title, ParamStr(0), akUserRunOnce);
end;
So nun wüsste ich gerne wie ich das Programm mit eine OnButtonClick routine wieder aus dem Autostart entfernen kann...

Weiß jemand wie ich das machen kann?

[BITTE keine Vorschläge, dies über Windows oder andere Programme zu machen!!]

mkinzler 30. Aug 2007 16:22

Re: Programm aus Autostart entfernen
 
.DeleteString()

shmia 30. Aug 2007 16:42

Re: Programm aus Autostart entfernen
 
Ich habe die Funktion mal zu einer hübschen Unit ausgebaut.
Als Gegenleistung hätte ich gerne, das die Funktionen getestet werden und evtl. Änderungen
hier gepostet werden.
Und dann bitte in die Code-Library aufnehmen.
Delphi-Quellcode:
unit AutorunHlp;

interface

type
  TAutorunKind = (akUserRun, akUserRunOnce, akRun, akRunOnce, akRunServices, akRunServicesOnce);

function CreateAutorunEntry(const AName, AFilename: String; const AKind: TAutorunKind): Boolean;
function DeleteAutorunEntry(const AName: String; const AKind: TAutorunKind): Boolean;

implementation

uses Windows, Registry, RegStr;


function GetRegistryPath(const AKind: TAutorunKind):string;
begin
   case AKind of
     akRun, akUserRun       : Result := REGSTR_PATH_RUN;
     akRunOnce, akUserRunOnce: Result := REGSTR_PATH_RUNONCE;
     akRunServices          : Result := REGSTR_PATH_RUNSERVICES;
     akRunServicesOnce      : Result := REGSTR_PATH_RUNSERVICESONCE;
   end;
end;

function CreateAutorunEntry(const AName, AFilename: String; const AKind: TAutorunKind): Boolean;
var
   Reg: TRegistry;
begin
   Result:=False;
   Reg := TRegistry.create;
   try
      if (AKind=akUserRun) or (AKind=akUserRunOnce) then
        Reg.Rootkey:= HKEY_CURRENT_USER
      else
        Reg.RootKey := HKEY_LOCAL_MACHINE;

      Result:=Reg.OpenKey(GetRegistryPath(AKind), True);
      if AFilename = '' then
      begin
         if Result then
            Result := Reg.DeleteKey(AName);
      end
      else
         Reg.WriteString(AName, AFilename);
   finally
      Reg.Free;
   end;
end;

function DeleteAutorunEntry(const AName: String; const AKind: TAutorunKind): Boolean;
begin
   Result := CreateAutorunEntry(AName, '', AKind);
end;

end.

gsh 30. Aug 2007 18:26

Re: Programm aus Autostart entfernen
 
Liste der Anhänge anzeigen (Anzahl: 1)
//edit:
Hab nochmal alles geändert und in delphi kompiliert.
Müsste funktionieren.
Hab außerdem noch eine Funktion hinzugefügt um herauszufinden ob der Eintrag vorhanden ist

//edit2:
NEUE VERSION!!!
Die ist jetzt getestet und funktioniert jetzt auch :mrgreen:

shmia 31. Aug 2007 09:33

Re: Programm aus Autostart entfernen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von gsh
Hab nochmal alles geändert und in delphi kompiliert.

Und hab jetzt den Code nochmals eingedampft, da die 3 Funktionen ja fast identisch sind.

PS: da war noch ein Fehler drin; jetzt müsste es passen


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr.

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