Autor Beitrag
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 14.05.03 11:32 
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:
  1. Software\Microsoft\Windows\CurrentVersion\RunOnce und
  2. 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:
ausblenden volle Höhe Delphi-Quelltext
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,                   // Gibt einen eindeutigen Bezeichner an
    aFile: String;            // Gibt den vollständigen Dateinamen (incl. Path) an
    aPrivate,                 // Nur für den angemeldeten Benutzer?
    aRunOnlyOnce: Boolean;    // Nur ein einziges Mal starten?
    aDelete: Boolean = False  // Soll der Eintrag entfernt werden?
  );
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:
ausblenden Delphi-Quelltext
1:
AddRunOnStartup ('Mein Anwendung', ParamStr (0), False, False);					

Möchte man den erstellten Eintrag wieder löschen reicht folgender Aufruf:
ausblenden Delphi-Quelltext
1:
AddRunOnStartup ('Mein Anwendung''', False, False, True);					


Zuletzt bearbeitet von Tino am Do 15.05.03 11:19, insgesamt 4-mal bearbeitet