![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Kernel32.dll в Win2k. Скрытие приложения при нажатии Ctrl+Alt+Del [D7, Win2k]
zolotov © (2003-04-05 19:56:00)Ув. Мастера, подскажите пожалуйста такую вещь. Я хочу, чтобы приложения не было видно в диспетчере задач по нажатию Ctrl+Alt+Del. Пишу следующий код:
functionRegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall;
external"KERNEL32.DLL";
procedureTForm1.Button1Click(Sender: TObject);
begin
//Hide
if not(csDesigning inComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 1);
end;
procedureTForm1.Button2Click(Sender: TObject);
begin
//Show
if not(csDesigning inComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 0);
end;
При запуске приложения выдается сообщение об ошибке:
Точка входа в процедуру RegisterServiceProcess не найдена в библиоткеке DLL KERNEL32.DLL
В чем здесь дело?
Причем, такое сообщение выскакивает и при запуске некоторых других программ. Например, я писал прогу на Delphi5, ОС Windows ME(98), чтобы форма была круглой, теперь установил Win2K и вот появился такой глюк.
Как это можно исправить?
Заранее благодарен.
Polevi (2003-04-06 19:10:00) [1]какие открываются возможности !!!
Юрий Зотов (2003-04-06 11:22:00) [2]То есть, "функции RegisterServiceProcess действительно нет в Win2k", но если подгружать ее динамически, то можно подгрузить то, чего нет.
Тогда уж лучше сразу подгружать функцию HideMySuperPuperTrojan. Ее тоже нет, но если в одном случае динамическая загрузка помогает, то должна помочь и в другом.
zolotov (2003-04-05 22:02:00) [3]Спасибо
DrPass (2003-04-05 20:53:00) [4]В принципе, kernel32.dll даже не потребуется загружать, поэтому можно просто запросить ее дескриптор:
var
RSP = function (H: THandle; K: dword): dword; stdcall;
@RSP := GetProcAddress(GetModuleHandle(pchar("kernel32.dll")), pchar("RegisterServiceProcess"));
if assigned(@RSP) then RSP(0, 1);
для скрытия программы и
if assigned(@RSP) then RSP(0, 0);
для раскрытия
zolotov (2003-04-05 20:27:00) [5]Спасибо, а как подгружать через LoadLibrary/GetProcAddress? Желательно бы пример.
Спасибо.
DrPass (2003-04-05 20:14:00) [6]Очень просто: функции RegisterServiceProcess действительно нет в Win2k, и чтобы прога там могла работать, ее нужно подгружать динамически через LoadLibrary/GetProcAddress. Естественно, о невидимости в этом случае речь не идет.
Невидимой прогу в Win2k сделать без громоздких хакерских методов невозможно.