Möchte man eine (die eigene oder eine fremde) Anwendung beim Windows Start ausführen lassen ohne dafür den Autostart-Ordner zu benutzen müss man einen entsprechenden Eintrag in die Registry vornehmen.
Dafür vorgesehen sind zwei Registry-Schlüssel im Root
HKEY_LOCAL_MACHINE:
- Software\Microsoft\Windows\CurrentVersion\RunOnce und
- Software\Microsoft\Windows\CurrentVersion\Run
Der Unterschied zwischen
RunOnce und
Run ist der das in RunOnce die Anwendung nur einmal gestartet wird und der Eintrag in der Registry automatisch nach dem ausführen der Anwendung gelöscht wird. Die in Run eingetragenen Anwendungen werden bei jedem Start von Windows ausgeführt.
Hier ein Procedure die das Eintragen und das Löschen einer solchen Anwendung in bzw aus der Registry erleichtert:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| Uses Registry;
Procedure RunOnStartup ( aTitle, aFile: String; aPrivate, aRunOnlyOnce: Boolean; aDelete: Boolean = False ); Const cRegRoot: Array [Boolean] Of HKEY = (HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER); cRegKey: Array [Boolean] Of String = ('Run', 'RunOnce'); Var Reg: tRegistry; Begin Reg := tRegistry.Create;
Try Reg.RootKey := cRegRoot [aPrivate]; Reg.OpenKey ('Software\Microsoft\Windows\CurrentVersion\' + cRegKey [aRunOnlyOnce], False);
If Not aDelete Then Reg.WriteString (aTitle, aFile) Else if Reg.ValueExists(aTitle) then Reg.DeleteValue (aTitle);
Finally Reg.Free; End; End; |
Hier ein Beispiel für die Anwendung von RunOnStartup:
Delphi-Quelltext
1:
| AddRunOnStartup ('Mein Anwendung', ParamStr (0), False, False); |
Möchte man den erstellten Eintrag wieder löschen reicht folgender Aufruf:
Delphi-Quelltext
1:
| AddRunOnStartup ('Mein Anwendung', '', False, False, True); |