|
101 / 42 / 9
Регистрация: 09.12.2012
Сообщений: 597
|
|
Запрет/Блокирование запуска программ с WinAPI25.07.2013, 19:35. Показов 10807. Ответов 31
Метки нет (Все метки)
Добрый день, возникла такая задача, рационального решения пока я не вижу. Тут вопрос наверное в большей степени по WinAPI нежели конкретного языка. На данный момент я нашел несколько вариантов:
1) через реестр HKEY_CURRENT_USER\SOFTWARE\Microsoft\ Windows\CurrentVerson\Policies\Explorer 2) через групповые политики 3) AppLocker 4) Слежка и убийство процесса после открытия Так или иначе эти способы ненадежны... Так например реестр работает лишь в случае обращения к приложению через стандартный проводник (ShellExecute), а групповые политики разбавленные актуальным AppLocker'ом неуниверсальны - находятся лишь в дорогих выпусках windows.. Убийство же процессов вещь далеко не светская, нужно как-то умно перехватить болезнь, а не бороться с последствиями) Может кто-нибудь из знатоков подумает и натолкнет меня на правильный путь или предложит идею, поделится знаниями))) спс
0
|
|
| 25.07.2013, 19:35 | |
|
Ответы с готовыми решениями:
31
Блокирование запуска программ! Запрет запуска программ Разрешение и запрет запуска программ |
|
Ушел с форума
|
|
| 25.07.2013, 21:17 | |
|
5) Ключ реестра AppCertDlls + dll-ка с callback-функцией, разрешающей или
запрещающей запуск процесса. Еще можно в kernel mode много натворить интересного, хотя это не все любят/умеют.
0
|
|
|
Заблокирован
|
|
| 25.07.2013, 21:46 | |
|
WinAPI тут слева, строго через политики, всякие аттачи очень, очень большому количеству софта сильно не понравятся. Применять политики можно и руками на базовой винде правкой secedit.sdb, импортом inf и компании.
0
|
|
|
Maniac
|
||
| 26.07.2013, 14:13 | ||
|
0
|
||
|
Заблокирован
|
|
| 26.07.2013, 14:23 | |
|
ISergey, почитай это http://eugenys.blogspot.ru/201... st_11.html . Учти что в 6+ уже по другому, но схоже.
0
|
|
| 26.07.2013, 14:42 | |
|
Не по теме: ISergey, ну мало ли...
0
|
|
|
101 / 42 / 9
Регистрация: 09.12.2012
Сообщений: 597
|
|||
| 26.07.2013, 18:07 [ТС] | |||
|
Спасибо за ответы! Пятый способ мне понравился, однако есть некоторые проблемы или мое непонимание.
I. Она должна работать на Windows XP и новее.. II. Одновременно планируется отслеживать и предотвращать запуск около 700 приложений (.exe)
0
|
|||
|
101 / 42 / 9
Регистрация: 09.12.2012
Сообщений: 597
|
|
| 27.07.2013, 09:38 [ТС] | |
|
ISergey, спс теперь за xp я спокоен, а как насчет II-го? кто-нибудь может прокомментировать рационален ли ваш способ в данном случае?
0
|
|
|
101 / 42 / 9
Регистрация: 09.12.2012
Сообщений: 597
|
|
| 29.07.2013, 13:23 [ТС] | |
|
ISergey, способ не работает для процесса explorer.exe
очень расстроен, суть моей работы в перехвате и фильтровки абсолютно всех процессов.((( Добавлено через 1 минуту То есть, когда пользователь в пуске запускает калькулятор, то процесс explorer.exe создает процесс calc.exe. Но если любая другая программа создаст процесс calc.exe, то CreateProcessNotify перехватит ее... Добавлено через 2 минуты т.е. ваш вариант не перехватывает процессы, которые порождает explorer.exe
0
|
|
|
Ушел с форума
|
||
| 29.07.2013, 13:41 | ||
|
Которая, понятное дело, не может загружаться в 64-битный explorer.exe и контролировать его запуск...
0
|
||
|
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
|
||
| 29.07.2013, 14:02 | ||
)
0
|
||
|
Ушел с форума
|
||
| 29.07.2013, 14:13 | ||
|
P.S. У меня все работает на любых системах от XP до Win8.1 (32-64).
0
|
||
|
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
|
|
| 29.07.2013, 15:11 | |
|
0
|
|
|
101 / 42 / 9
Регистрация: 09.12.2012
Сообщений: 597
|
|
| 29.07.2013, 15:17 [ТС] | |
|
Убежденный, да ты прав. У меня win7 X64 и блокирует прога только 32 битные приложения, видимо действительно нужно делать отдельную библиотеку... но я не силен в си, да и для х64 никогда специально ничего не писал. Свой проект вообще делаю на c# + wpf и потом буду думать как это туда прикрутить).
Добавлено через 2 минуты да и если не конфиденциально, не могли бы Вы выложить свой проект? Конечно если он отдельно для теста, а не включен в какую-нибудь специализированную программу, много я не прошу).
0
|
|
|
Ушел с форума
|
||
| 29.07.2013, 21:38 | ||
|
Псевдокод.
1) Создаем проект dll. 2) Добавляем в dll экспортируемую (через DEF-файл !) функцию CreateProcessNotify, соглашение о вызовах - stdcall, параметры: WCHAR const *pExeName и ULONG Reason. Первое - это путь к запускаемому exe, второе - тип события. 3) В CreateProcessNotify должна быть следующая логика: - если Reason не равна APPCERT_IMAGE_OK_TO_RUN (1), просто возвращаем код успеха (0). - если Reason равна 1, тогда проверяем, можно ли запускать данное приложение. Если можно, снова возвращаем 0. Если нельзя - возвращаем NT-статус ошибки. Например, 0xC0000022 (access denied). Подходящий код можно выбрать в файле ntstatus.h, входящий в Windows SDK. 4) Компилируем dll в двух конфигурациях - 32-bit и 64-bit. Если у dll есть зависимости от библиотек или функций, которых может не оказаться на целевых компьютерах, устраняем их. 5) Регистрируем dll в следующем ключе реестра (создать, если его нет): HKLM\System\CurrentControlSet\Control\Se ssion Manager\AppCertDlls. Для этого просто добавляем значение с произвольным именем (я предпочитаю GUID-форму для избежания конфликтов), типом REG_EXPAND_SZ и значением, содержащим полный путь к dll. Например: "{GUID} REG_EXPAND_SZ C:\mydll.dll". В 32-битных версиях Windows нужно регистрировать только 32-битную dll. В 64-битных - обе dll-ки, 32-битную и 64-битную. Перезагрузка не требуется. Добавлено через 8 минут Не по теме: Я вообще этим способом не пользуюсь. Он не секьюрный. Это же user mode, Добавлено через 6 часов 4 минуты Да, ну и напоследок стоит добавить, что запуск modern-приложений на Windows 8 и выше таким способом не отследить и не заблокировать.
2
|
||
|
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
|
||||||||
| 30.07.2013, 13:40 | ||||||||
|
Блин я вот логики не понимаю -
Далее - Вот я накидал dll ( для блокировки приложение - 1.exe ) но он не реагирует , кто скажет какие ошибки -
0
|
||||||||
|
Ушел с форума
|
||||||||
| 30.07.2013, 14:22 | ||||||||
|
который эту функцию вызывает. То есть, когда некто создает новый процесс, в его адресное пространство загружаются проверяющие dll-ки из списка в реестре, и каждой в функцию CreateProcessNotify подается путь к файлу exe запускаемого процесса. А флаг Reason устанавливается в APPCERT_IMAGE_OK_TO_RUN. Если хотя бы одна dll-ка запрещает запуск, запуск блокируется. Есть также вторая фаза вызова dll-ок, когда им сообщается о результатах прошедшего "голосования".
Если делать это через __declspec(dllexport), ее имя в секции экспорта будет декорированным и система не сможет найти функцию. И соглашение о вызовах должно быть _stdcall, в коде этого не видно (хотя _stdcall может быть установлен в настройках проекта, как соглашение о вызовах по умолчанию). Ну и последнее - не char *pExeName, а WCHAR *pExeName, здесь подразумевается строка в "широких символах".
1
|
||||||||
| 30.07.2013, 14:22 | |
|
Помогаю со студенческими работами здесь
20
Запрет запуска некоторых программ
Разрешение/запрет запуска других программ
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|