Статьи по Делфи
Меню сайта


Категории каталога
Мои статьи [2]
Функции и процедуры Win Api [20]
Работа с мышью [10]
Реестр и Делфи [11]
Работа с файлами [38]
Делфи и Хакер [10]
Инсталлятор собственными руками [6]
Хитрости в делфи [3]
Работа с системой [19]


Форма входа


Поиск по каталогу


Друзья сайта


Наш опрос
Понравились ли вам треки
Всего ответов: 156


Приветствую Вас, Гость · RSS 2024-04-19, 9:32 PM
Начало » Статьи » Делфи и Хакер

Как отомстить врагу. Добавляем приложение в Автозагрузку
В статье "Как отомстить "врагу" средствами Windows.pas" я обещал рассказать, как добавить приложение в StartUp. Так что читайте и впитывайте. Сейчас мы разберем несколько вариантов алгоритма.
Можно просто скопировать исполняемый файл в папку "Автозагрузка", узнав ее местонахождение с помощью функций модуля ShlObj.pas.

program StartUp;

{$APPTYPE CONSOLE}

uses
ShlObj, //!!
SysUtils,
Windows;
var
Folder: Pchar; //путь к StartUp
List: PitemidList; //список "специальных" папок
begin
//ищем папку
SHGetSpecialFolderLocation(0,CSIDL_STARTUP,List);
new(folder);
SHGetPathFromIDList(List,folder);
//Нашли? Переходим в директорию StartUp
ChDir(folder);
//копируем файл
CopyFile(PChar(ExtractFilePath(paramStr(0)) + 'StartUp.exe'), 'StartUp.exe', true); //укажите имя своего EXE файла
end.

Теперь загляните в папку "Автозагрузка". Если вы указали в функции имя СВОЕГО файла, он должен быть уже там :).

Обратите внимание на три выделенных строки. С их помощью можно найти путь к любой системной папке, указав в функции SHGetSpecialFolderLocation соответствующую константу: CSIDL_DESKTOP для рабочего стола, CSIDL_FONTS для шрифтов и т.д.

А теперь более простой способ - запись ключа в секцию Run реестра. Ниже в одной процедуре совмещено и его создание, и удаление.

Uses Registry;
//............

procedure ChangeReg(StrName: ShortString; delete: boolean);
var
reg: TRegistry;
begin
Reg := nil;
try
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.LazyWrite := false;
reg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionRun',false);
if not delete then reg.WriteString(StrName, Application.ExeName)
else reg.DeleteValue(StrName);
reg.CloseKey;
reg.free;
except
if Assigned(Reg) then Reg.Free;
end;
end;

procedure TForm1.AddBtnClick(Sender: TObject);
begin
ChangeReg('My App',false); //добавляем в Автозагрузку
end;

procedure TForm1.RemoveBtnClick(Sender: TObject);
begin
ChangeReg('My App',true); //удаляем из Автозагрузки
end;

Вот и всё

Категория: Делфи и Хакер | Добавил: Admin (2006-12-18)
Просмотров: 3637 | Комментарии: 1 | Рейтинг: 5.0 |

Всего комментариев: 1
1 Рома  
0
ну че за *у*ня какую-то ошибку выдает на певое слово Uses

Имя *:
Email *:
Код *: