Как добавить приложение в Автозауск Windows
Первая возможность создания автозагрузки – создать ярлык в папке Автозагрузка. Существуют константы в Windows, которые позволяют определить системные папки. Константой для папки Автозагрузки является CSIDL_COMMON_STARTUP. Более подробно, Вы можете прочитать в справке по Windows.
Вторая возможность заключается в создании записи в реестре Windows. Существуют различные места в реестре, где это можно сделать.
Вот разделы реестра HKEY_LOCAL_MACHINE, к которым доступ имеет только Администратор:
Software\Microsoft\Windows\CurrentVersion\RunServicesOnce Software\Microsoft\Windows\CurrentVersion\RunServices Software\Microsoft\Windows\CurrentVersion\RunOnce Software\Microsoft\Windows\CurrentVersion\Run
Ключи RunServiceOnce и RunOnce выполняются только один раз. Этот ключ исчезнет при следующем запуске Windows.
Если Вы хотите, чтобы программа запускалась постоянно при запуске Windows, Вам нужно создать соответствующую запись в разделе HKEY_LOCAL_MACHINE:
Software\Microsoft\Windows\CurrentVersion\Run Software\Microsoft\Windows\CurrentVersion\RunOnce
Следующая функция инкапсулирует доступ к этим ключам. Она получает три параметра: Имя записи, Имя файла (включая путь) и тип записи. Этот тип определяется следующим образом:
type TAutorunKind = (akUserRun, akUserRunOnce, akRun, akRunOnce, akRunServices, akRunServicesOnce);
Нужно подключить модуль Registry в раздел uses модуля формы.
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;
Комментарии