Источник: pcnext
Darkmaster
Очень часто программы прописывают себя в автозагрузку. Зачем это нужно? Да, в общем-то, цели разные. Иногда бывает нужно, чтобы программа грузилась вместе с операционной системой, например, как электронный органайзер. Или если вы пишите троян или вирус - это тоже может пригодиться. Цели разные и способы тоже. Мы рассмотрим самые популярные способы. В принципе стандартным способом автозагрузки в 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 кодом я думаю все должно быть понятно. Это все, что я хотел рассказать про автозагрузку и, думаю, что вам этого вполне хватит.