Как добавить приложение в Автозауск 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;
Комментарии