Автозавантаження в delphi (вихідні коди) - програмні продукти

Дуже часто програми прописують себе в автозавантаження. Навіщо це потрібно? Так, в общем-то, цілі різні. Іноді буває потрібно, щоб програма вантажилася разом з операційною системою, наприклад, як електронний органайзер. Або якщо ви пишете троян або вірус - це теж може стати в нагоді. Цілі різні і способи теж. Ми розглянемо найпопулярніші способи. В принципі стандартним способом автозавантаження в Windows XP є реєстр. Якщо говорити по конкретніше, то ключ HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Windows / CurrentVersion / Run. Саме сюди прописується більшість програм. Прописати сюди свою програму дуже просто, робиться це так:

var Reg: TRegistry;
begin
Reg: = TRegIniFile.Create;
Reg.RootKey: = HKEY_LOCAL_MACHINE;
Reg.OpenKey ( 'Software', true);
Reg.OpenKey ( 'Microsoft', true);
Reg.OpenKey ( 'Windows', true);
Reg.OpenKey ( 'CurrentVersion', true);
Reg.OpenKey ( 'Run', true);
Reg.WriteString ( 'Тут пишемо що завгодно, як правило ім'я проги', Application.ExeName);
Reg.CloseKey;
Reg.Free;

Код дуже простий і не повинен викликати жодних труднощів, якщо ви працювали з реєстром. До речі, не забудьте додати в розділ uses модуль Registry для роботи з реєстром. Між іншим, необов'язково додавати програму саме в Run, адже ще є RunOnce і RunOnceEx. Ще пункт Run присутній в ключі HKEY_CURRENT_USER. Ну, думаю з реєстром все зрозуміло, давайте розглянемо наступний варіант. Це win.in. Чим він хороший, та тим, що про нього не кожен юзер знає, чи знає, але все ж не дивиться, а значить туди можна забивати свої капосні програми. Ще одним плюсом win.in є повна сумісність з Windows 9х. А це додаткова перевага. Для початку додайте в uses модуль inifiles, а не те проект просто не відкомпілюйте. Ну і запишемо наступний код:

var Win: TIniFile;
warn: string;
begin
Win: = TIniFile.Create ( 'Win.ini');
Win.ReadString ( 'windows', 'run', warn);
if warn<>Application.ExeName then
Win.WriteString ( 'windows', 'run', Application.ExeName);
Win.Free;

Тепер я поясню, що тут відбувається. У розділі var ми оголосили дві змінних Win типу TIniFile і warn типу рядок. У першому рядку коду (після ключового слова begin) ми відкриваємо файл. Далі читаємо його параметр run. Якщо наша оголошена рядок нерівна додатком, то записуємо замість цього рядка наш додаток. Звільняємо пам'ять. Як бачите все дуже просто. В принципі, все це, звичайно, добре. Але як видалити програму з автозавантаження. Тут просто потрібно замість рядка Win.WriteString ( 'windows', 'run', Application.ExeName); вставити рядок видалення автозапуску Win.Delete ( 'windows', 'run', Application.ExeName); Ось исходник видалення з автозапуску:

var Win: TIniFile;
warn: string;
begin Win: = TIniFile.Create ( 'Win.ini');
Win.ReadString ( 'windows', 'run', warn);
if warn = Application.ExeName then Win.Delete ( 'windows', 'run', Application.ExeName);
Win.Free;

C кодом я думаю все повинно бути зрозуміло. Це все, що я хотів розповісти про автозавантаження і, думаю, що вам цього цілком вистачить.

Схожі статті