![]() |
Programm aus Autostart entfernen
Hallo
Ich benutze folgenden Quellcode um ein Programm in den Autostart zu schreiben:
Delphi-Quellcode:
So nun wüsste ich gerne wie ich das Programm mit eine OnButtonClick routine wieder aus dem Autostart entfernen kann...
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; Weiß jemand wie ich das machen kann? [BITTE keine Vorschläge, dies über Windows oder andere Programme zu machen!!] |
Re: Programm aus Autostart entfernen
.DeleteString()
|
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. |
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: |
Re: Programm aus Autostart entfernen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
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