Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];

Вниз

Перехват запуска приложений   Найти похожие ветки 

 
DNT   (2003-08-09 18:45) [0]

Программа разрешает запуск только избранных приолжений.

Необходимо написать программу, которая будет ловить запуск приложений и разрешать запуск программ только из специального списка, а запуск других будет блокировать.

Помогите плз, с чего начать?
Мои мысли:

Поставить хук. Но на что я не знаю :(


 
Безымянное среднего рода   (2003-08-09 20:20) [1]

А чем стандарьный способ не устраивает ?
Restricting Applications Users Can Run (Windows 9x and NT)
Windows gives the ability to restrict the applications that can be run by users on a workstation.
Open your registry and find the key [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]

Create a new DWORD value and name it "RestrictRun" set the value to equal "1" for enabled or "0" for disabled.

Then define the applications the are allowed to be run at the key [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun].

Creating a new string value for each application, named as consecutive numbers.

Reboot the computer for the changes to take effect.


 
NightAngel   (2003-08-09 21:23) [2]

> DNT © (09.08.03 18:45)
Для драйвера виртуального устройства есть возможность обработки сообщения CREATE_PROCESS, которое рассылается VWIN32 когда бы ни запустился новый процесс. В системе Windows NT/2000/XP существует дополнительная возможность установки такой функции через вызов процедуры PsSetCreateProcessNotifyRoutine из NTOSKRNL. Такая функция (описание смотрите в MSDN) позволяет драйверу устройства получать извещения системы о запуске новой программы.


 
DNT   (2003-08-10 09:50) [3]

NightAngel
CREATE_PROCESS можно на хук поставить?
Я не очень в этом разбираюсь.
Есть ли где-нибудь примерчик?


 
mOOx_   (2003-08-10 10:35) [4]

Еще вариант: функцию TerminateProcess знаешь? Если ресурсов не жалко, то можно ее просто в цикле с ProcessMessage обрабатывать или по таймеру.


 
Burmistroff   (2003-08-10 21:10) [5]

По хорошему - это делается так, как сказали выше. По-плохому - через перехват API.

Примеры второго способа можно обнаружить на http://maxcomputing.narod.ru/


 
Marser   (2003-08-11 01:18) [6]

Слушайте Безымянное среднего рода


 
An-N   (2003-08-11 18:21) [7]

>Marser
Проблема в том, что те правила распространяются только на explorer.exe


 
Axis_of_Evil   (2003-08-11 18:25) [8]

wh_Shell совсем никак?


 
Burmistroff   (2003-08-11 18:27) [9]

>Axis_of_Evil
wh_Shell пропускает порядка 40% случаев (16bit; безоконные; не из explorer.exe; ...)


 
DNT   (2003-08-12 09:23) [10]

Ребята, необходимо именно из моей программы перехватывать запуск.
Т.е. через API.

А как это сделать?


 
PGM   (2003-08-12 11:42) [11]

Перехватом API CreateProcess как посоветовал Burmistroff "по-плохому". Практически любой запуск рано или поздно приводит к этому вызову (но теоретически могут быть и исключения - те же 16-битные, например).


 
NightAngel   (2003-08-12 14:50) [12]

> DNT © (12.08.03 09:23) [10] необходимо именно из моей программы перехватывать запуск.

С написанием драйвера, как я понял, проблемы. Если пишете под Win9x/Me можете пропатчить Kernel32.dll в памяти (для всех процессов он общий) - функции CreateProcess(), WinExec() etc. Под WinNT/2000/XP, как всегда всё сложнее. Без драйвера, для такой задачи, здесь всё будет полумерами ничего не гарантирующими. Можно поставить hook на NtResumeThread (NTDLL.DLL) во всех существующих процессах (эта функция всегда вызывается после того, как новый процесс загрузится).


 
Burmistroff   (2003-08-12 18:09) [13]

>NightAngel
Иными словами - это и есть перехват API. Кстати, как показала практика, все совсем наоборот: для NT все намного более проще и надежнее, нежели для Win9x ;)


 
Е-Моё имя   (2003-08-12 18:31) [14]

Burmistroff (12.08.03 18:09)

имхо то же


 
NightAngel   (2003-08-12 20:38) [15]

> Burmistroff Иными словами - это и есть перехват API.

Ну, надо-же! Конца нет чудесам! :)

> как показала практика, все совсем наоборот: для NT все намного более проще и надежнее

Подобную задачу приходилось решать, и как показала практика, всё немного сложнее, чем кажется на первый взгляд. Или может быть у меня коэфициент кривизны конечностей, несколько превышает требования ГОСТа. ;)



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.013 c
6-89450
kopcap
2003-09-02 13:32
2003.10.27
Работа с файлами...


1-89246
GreySerg
2003-10-14 17:22
2003.10.27
Есть ли в Delphi стандартная функция FileSize (FileName: string)


1-89318
Элина
2003-10-16 16:17
2003.10.27
Как загрузить иконку из DLL?


14-89476
Knight
2003-10-07 06:54
2003.10.27
Люди, как получить более менее случайное число?


14-89539
Всеволод Соловьёв
2003-10-07 21:49
2003.10.27
attention _WINXP_SP1_ attention





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский