Карта сайтаСсылкиКонтакты

Как добавить приложение в Автозагрузку Windows

PDF Печать
Статьи

Если Вы хотите, чтобы Ваша программа запускалась автоматически при запуске Windows, Вы должны прописать ее в Автозагрузку. Главным образом, в этой статье используется два варианта, которые описаны в данной статье.

Первая возможность создания автозагрузки – создать ярлык в папке Автозагрузка. Существуют константы в Windows, которые позволяют определить системные папки. Константой для папки Автозагрузки является CSIDL_COMMON_STARTUP. Более подробно, Вы можете прочитать в справке по Windows.

Вторая возможность заключается в создании записи в реестре Windows. Существуют различные места в реестре, где это можно сделать.

Вот разделы реестра HKEY_LOCAL_MACHINE в ОС NT/2k/XP, к которым доступ имеет только Администратор:


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;

Это будет запускать Вашу программу при загрузке Windows или же, когда пользователь входит в систему.


procedure TForm1.Button1Click(Sender: TObject);
begin
   CreateAutorunEntry(Application.Title, ParamStr(0), akUserRunOnce);
end;

 

Добавить комментарий


Защитный код
Обновить