Как запретить закрытие программы windows 10

Обновлено: 06.07.2024

Как зарегистрировать программу как службу?
И как потом запретить её завершение.


> vodvorezlaya (10.04.06 10:17)

> Как зарегистрировать программу как службу?
> И как потом запретить её завершение.

Прога написана мной на Дельфе и видна только в диспетчере задач, как поместить её в список служб и сделать так, что бы её никак нельзя было завершить?(через диспетчер задач)


> vodvorezlaya (10.04.06 10:57) [2]

> Прога написана мной на Дельфе и видна только в диспетчере
> задач, как поместить её в

Большое спасибо. Отлично, а на Дельфе есть подобное.

а как теперь сделать так чтобы приложение нельзя было закрыть.

поставь AllowStop в false

PS. ты терь так по кажд пункту спрашивать будешь? попробуй F1

F1 у меня английский, я как раз и ищу описание всего процесса (свойств и методов) уже 3 часа.

сенькс, уже чуть легче

а F1 у всех английский 🙂 учи инглишь :))


> vodvorezlaya (10.04.06 13:57) [6]


> а как теперь сделать так чтобы приложение нельзя было закрыть?
> .

из ограниченного юзеровского аккаунта его по-умолчанию нельзя закрыть.

← →
Игорь Шевченко © ( 2006-04-10 17:52 ) [11]

Пользователь с привилегиями администратора закроет все.


> Пользователь с привилегиями администратора закроет все.

Ну, у Local system привилегии повыше будут. Не всегда и администратор закроет.


> Чапаев © (10.04.06 18:27) [12]

> > Пользователь с привилегиями администратора закроет все.

> Ну, у Local system привилегии повыше будут. Не всегда
> и администратор закроет.

Игорь Шевченко © (10.04.06 17:52) [11]
Не все.

Есть процесс, с утра получилось.

Но, како показала практика, ЭТОТ ПРОЦЕСС НЕОБХОДИМО КОНТРОЛИРОВАТЬ И В СЛУЧАЕ ЕГО ОСТАНОВКИ ЗАПУСКАТЬ ЗАНОВО, ХЕЛП ПЛИЗ КАК ЭТО СДЕЛАТЬ.

зайди в управление службами и поставь там запуск при сбое

я просто видел проги (с драйверами которые) контролируют службы и протоколируют их, а вот как взаимодействовать между службами.

← →
Игорь Шевченко © ( 2006-04-11 10:33 ) [18]

Arazel © (11.04.06 05:57) [14]

КАК СДЕЛАТЬ ЧТОБЫ ОДНА СЛУЖБА ПЕРЕГРУЖАЛА ДРУГУЮ В СЛУЧАЕ ее остановки, У МЕНЯ там NT старый стоит там нет такого как перезагрузка в случае ошибки


> vodvorezlaya (11.04.06 15:37) [19]

> ее остановки, У МЕНЯ там NT старый стоит там нет такого
> как перезагрузка в случае ошибки

Надавать надо по рукам, кто ее останавливает.
Или тому, кто так пишет службы.

И нех так кричать.

← →
Anatoly Podgoretsky © ( 2006-04-11 15:52 ) [22]

А выключать будем клавишей Reset

А как запустить сервис в случае остановки програмно с другого?

может просто в событии OnShutdown или OnDestroy?

Я понял что проверять статус из одного процесса другим а как это сделать не хватает опыта!


> vodvorezlaya (12.04.06 08:11) [23]

а пароль поставить не пробовал? ))

Это служба тебе сказала?

И поменяй клавиатуру, у тебя клавиши западают.

Вот ты какой цвяточак аленькай!

type
DWORD = LongWord;
PDWORD = ^DWORD;

BOOL = LongBool;
PBOOL = ^BOOL;

SERVICE_STATUS = record
dwServiceType,
dwCurrentState,
dwControlsAccepted,
dwWin32ExitCode,
dwServiceSpecificExitCode,
dwCheckPoint,
dwWaitHint: DWORD;
end;
PSERVICE_STATUS = ^SERVICE_STATUS;

function SetErrorMode(
uMode: DWORD
): DWORD;
stdcall; external "kernel32.dll" name "SetErrorMode";

function ChangeServiceConfigA(
hService,
dwServiceType,
dwStartType,
dwErrorControl: DWORD;
lpBinaryPathName,
lpLoadOrderGroup: PAnsiChar;
lpdwTagId: PDWORD;
lpDependencies,
lpServiceStartName,
lpPassword,
lpDisplayName: PAnsiChar
): BOOL;
stdcall; external "advapi32.dll" name "ChangeServiceConfigA";

function ChangeServiceConfigW(
hService,
dwServiceType,
dwStartType,
dwErrorControl: DWORD;
lpBinaryPathName,
lpLoadOrderGroup: PWideChar;
lpdwTagId: PDWORD;
lpDependencies,
lpServiceStartName,
lpPassword,
lpDisplayName: PWideChar
): BOOL;
stdcall; external "advapi32.dll" name "ChangeServiceConfigW";

function OpenServiceA(
hSCManager: DWORD;
lpServiceName: PAnsiChar;
dwDesiredAccess: DWORD
): DWORD;
stdcall; external "advapi32.dll" name "OpenServiceA";

function OpenServiceW(
hSCManager: DWORD;
lpServiceName: PWideChar;
dwDesiredAccess: DWORD
): DWORD;
stdcall; external "advapi32.dll" name "OpenServiceW";

function OpenSCManagerA(
lpMachineName,
lpDatabaseName: PAnsiChar;
dwDesiredAccess: DWORD
): DWORD;
stdcall; external "advapi32.dll" name "OpenSCManagerA";

function OpenSCManagerW(
lpMachineName,
lpDatabaseName: PWideChar;
dwDesiredAccess: DWORD
): DWORD;
stdcall; external "advapi32.dll" name "OpenSCManagerW";

function CloseServiceHandle(
hSCObject: DWORD
): BOOL;
stdcall; external "advapi32.dll" name "CloseServiceHandle";

function ControlService(
//
hService,
dwControl: DWORD;
lpServiceStatus: PSERVICE_STATUS
): BOOL;
stdcall; external "advapi32.dll" name "ControlService";

CONST
SEM_FAILCRITICALERRORS = $00000001;
SEM_NOGPFAULTERRORBOX = $00000002;
SEM_NOALIGNMENTFAULTEXCEPT = $00000004;
SEM_NOOPENFILEERRORBOX = $00008000;

SERVICE_BOOT_START = $00000000;
SERVICE_SYSTEM_START = $00000001;
SERVICE_AUTO_START = $00000002;
SERVICE_DEMAND_START = $00000003;
SERVICE_DISABLED = $00000004;

SERVICE_ERROR_IGNORE = $00000000;
SERVICE_ERROR_NORMAL = $00000001;
SERVICE_ERROR_SEVERE = $00000002;
SERVICE_ERROR_CRITICAL = $00000003;

SERVICE_QUERY_CONFIG = $0001;
SERVICE_CHANGE_CONFIG = $0002;
SERVICE_QUERY_STATUS = $0004;
SERVICE_ENUMERATE_DEPENDENTS = $0008;
SERVICE_START = $0010;
SERVICE_STOP = $0020;
SERVICE_PAUSE_CONTINUE = $0040;
SERVICE_INTERROGATE = $0080;
SERVICE_USER_DEFINED_CONTROL = $0100;

SERVICE_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED
or SERVICE_QUERY_CONFIG
or SERVICE_CHANGE_CONFIG
or SERVICE_QUERY_STATUS
or SERVICE_ENUMERATE_DEPENDENTS
or SERVICE_START
or SERVICE_STOP
or SERVICE_PAUSE_CONTINUE
or SERVICE_INTERROGATE
or SERVICE_USER_DEFINED_CONTROL);

SC_MANAGER_CONNECT = $0001;
SC_MANAGER_CREATE_SERVICE = $0002;
SC_MANAGER_ENUMERATE_SERVICE = $0004;
SC_MANAGER_LOCK = $0008;
SC_MANAGER_QUERY_LOCK_STATUS = $0010;
SC_MANAGER_MODIFY_BOOT_CONFIG = $0020;

SC_MANAGER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED
or SC_MANAGER_CONNECT
or SC_MANAGER_CREATE_SERVICE
or SC_MANAGER_ENUMERATE_SERVICE
or SC_MANAGER_LOCK
or SC_MANAGER_QUERY_LOCK_STATUS
or SC_MANAGER_MODIFY_BOOT_CONFIG);

SERVICES_ACTIVE_DATABASEA:PAnsiChar = "ServicesActive";
SERVICES_FAILED_DATABASEA:PAnsiChar = "ServicesFailed";

SERVICE_CONTROL_STOP = $00000001;
SERVICE_CONTROL_PAUSE = $00000002;
SERVICE_CONTROL_CONTINUE = $00000003;
SERVICE_CONTROL_INTERROGATE = $00000004;
SERVICE_CONTROL_SHUTDOWN = $00000005;
SERVICE_CONTROL_PARAMCHANGE = $00000006;
SERVICE_CONTROL_NETBINDADD = $00000007;
SERVICE_CONTROL_NETBINDREMOVE = $00000008;
SERVICE_CONTROL_NETBINDENABLE = $00000009;
SERVICE_CONTROL_NETBINDDISABLE = $0000000A;
SERVICE_CONTROL_DEVICEEVENT = $0000000B;
SERVICE_CONTROL_HARDWAREPROFILECHANGE = $0000000C;
SERVICE_CONTROL_POWEREVENT = $0000000D;
SERVICE_CONTROL_SESSIONCHANGE = $0000000E;

//открываем SCM с полным доступом (как админ)
hSCM := OpenSCManagerW( NIL,NIL,SC_MANAGER_ALL_ACCESS );

if (hSCM <> 0) then
begin
//открываем интересующий нас сервис
//например, Machine Debug Manager,
//с правами на изменение конфигурации,
//остановку, запуск,
//приостановку и возобновление работы
hSVC := OpenServiceA( hSCM,"MDM",SERVICE_CHANGE_CONFIG
or SERVICE_STOP
or SERVICE_START
or SERVICE_PAUSE_CONTINUE
or SERVICE_INTERROGATE);

if (hSVC <> 0) then
begin
//останавливаем MDM
ControlService(hSVC,SERVICE_CONTROL_STOP,@SS);

//изменяем конфигурацию сервиса
ChangeServiceConfigA(hSVC,SERVICE_NO_CHANGE,
SERVICE_DEMAND_START,SERVICE_NO_CHANGE,
NIL,NIL,NIL,NIL,NIL,NIL,NIL);

//закрываем хэндл сервиса
CloseServiceHandle(hSVC);
end;

//закрываем хэндл SCM
CloseServiceHandle(hSCM);
end;
end.

Сенькс всем, на третий день нашёл


Если по какой-либо причине вам потребовалось заблокировать определенной программе Windows 10, 8.1 или Windows 7 доступ в Интернет, сделать это сравнительно просто, причем возможно использование как встроенных функций системы, так и сторонних бесплатных утилит для установки соответствующих ограничений.

В этой инструкции несколько способов запретить доступ к Интернету выбранных программ Windows: с помощью брандмауэра Windows вручную и простой утилиты для автоматизации этого процесса, а также с использованием стороннего файрвола. Также может быть интересно: Как заблокировать запуск программы в Windows.

Блокировка доступа программы в Интернет в брандмауэре Windows

Брандмауэр Windows — один из самых простых способов заблокировать программе доступ к Интернету, не требующий установки каких-либо сторонних средств. Шаги для блокировки будут следующими:

  1. Откройте панель управления (в Windows 10 это можно сделать, используя поиск в панели задач), переключите поле просмотр на «Значки», а затем откройте пункт «Брандмауэр Защитника Windows» или просто «Брандмауэр Windows».
  2. В открывшемся окне, слева, нажмите «Дополнительные параметры».
  3. Откроется окно брандмауэра в режиме повышенной безопасности. В левой панели выберите «Правило для исходящего подключения», а в правой — «Создать правило».
  4. Выберите «Для программы» и нажмите «Далее».
  5. Укажите путь к исполняемому файлу программы, которой нужно запретить доступ в Интернет.
  6. В следующем окне оставьте отмеченным пункт «Блокировать подключение».
  7. В следующем окне отметьте, для каких сетей выполнять блокировку. Если для любых — оставьте отмеченными все пункты.
  8. Укажите понятное для вас имя правила (это поможет его найти, если в будущем вы захотите снять блокировку) и нажмите «Готово».
  9. При желании можно проверить, сработала ли блокировка: как видите, у меня сработало.

Это не единственный возможный метод с помощью встроенного брандмауэра. Есть ещё один подход, который позволит легко заблокировать доступ в Интернет выбранным приложениям из Магазина Windows 10, не вводя вручную пути к ним:


  1. Создайте правило для всех программ, выбрав соответствующий пункт на 5-м шаге вышеприведенной инструкции.
  2. После создания правила, найдите его в списке, нажмите по нему мышью дважды, а затем на вкладке «Программы и службы» нажмите по кнопке «Параметры» в пункте «Пакеты приложений», отметьте «Применять к следующему пакету приложений» и укажите в списке то приложение, для которого нужно заблокировать доступ в Интернет. Например, у меня на скриншоте блокируется Edge.
  3. Примените сделанные настройки и проверьте их работоспособность.

В целом всё очень просто, но существует возможность даже более быстрой настройки запрета.

Автоматическое создание правил брандмауэра в Winaero OneClickFirewall

Winaero OneClickFirewall — простая бесплатная утилита для Windows, которая упрощает включение и отключение блокировки доступа программ к Интернету:

При этом, блокируя доступ, эта утилита использует тот же механизм, что и при ручном создании правил в брандмауре Windows, просто автоматизирует это.

Comodo Firewall

После установки файрвола, выполните следующие шаги для блокировки программе доступа к сети:

Примените настройки, после этого выбранная программа будет заблокирована. При необходимости разблокировать доступ, нажмите кнопку «Разблокировать приложение» в главном окне Comodo Firewall, отметьте программу и нажмите «Разблокировать».

В завершение ещё два нюанса:

  • Если вы блокируете программе доступ к сети с целью отключения обновлений или каких-то функций, учитывайте, что у некоторого ПО для этих целей служит не основной исполняемый файл, который вы запускаете, а вспомогательные .exe файлы или отдельные службы. Часть для них уже есть правила в брандмауэре Windows и их достаточно найти и изменить.
  • Если вы устанавливаете запреты в целях родительского контроля, возможно, лучше будет использовать иные средства, см. Родительский контроль Windows 10.

А вдруг и это будет интересно:

Почему бы не подписаться?

Рассылка новых, иногда интересных и полезных, материалов сайта remontka.pro. Никакой рекламы и бесплатная компьютерная помощь подписчикам от автора. Другие способы подписки (ВК, Одноклассники, Телеграм, Facebook, Twitter, Youtube, Яндекс.Дзен)

25.03.2019 в 00:41

Спасибо за наводку на прогу Winaero OneClickFirewall

25.03.2019 в 08:12

Зачем такие сложности? Можно просто кнопкой разорвать связь с интернетом и восстановить в любое удобное время.

25.03.2019 в 11:01

А если нам нужно пользоваться интернетом, но нужно чтобы одна конкретная программа туда не лезла и ничего не качала/не отправляла? При этом она тоже нам нужна в запущенном виде.

16.05.2019 в 23:34

Подозреваю, что это цветочки. Касперский является настоящим трояном, мониторит все действия, сливает, на какие сайты ходишь. Находясь «внутри периметра» может предоставить доступ извне любой программе

25.03.2019 в 10:46

а в ESET NOD32 Smart Security случайно не знаете как?

25.03.2019 в 10:58

25.03.2019 в 14:08

Всё очень просто, на первый взгляд кажется много… Итак: Расширенные параметры — Защита сети — Файервол — Дополнительно — Правила — Изменить — Добавить, там где направления указать Оба — Переходим вверху во вкладку Локальные, внизу где Приложения нажать на … и указать на .exe файлы той программы, которой блокируете доступ. Сохранить

25.03.2019 в 12:38

Дмитрий, я решил это просто. С помощью утилиты Easy Context Menu, там ставишь две галки на блокировать, и разблокировать доступ через брандмауэр и решено! Оба пункта появляются в контекстном меню 10 ки. Кроме этого, там много всякого разного.

26.03.2019 в 22:44

А как же утилита «Windows 10 Firewall Control»? По-моему, лучшее для этих целей: установил и дальше только жмешь кнопки «разрешить» или «запретить», когда кто-то ломится в инет.

28.10.2019 в 10:22

Как запретить выход в сеть portable-программе? Не буду же я на каждом компьютере настраивать брандмауэр.

Сайт для Настоящих Компьютерщиков

Сейчас просматривают эту тему:

а также: 1 гость, 0 скрытых пользователей.

Последние
Что лучше ноутбук или обычный ПК?
Хочу asus zenfone 5
Борьба со спамом на форуме
Тотализатор апдейтов Яндекса
Сайт по соционике
Самые активные 5 т
Случайные статьи

Объединенный Открытый Проект » Программирование » Windows API » Запретить закрытие приложения

Запретить закрытие приложения

Как это сделать

Дата регистрации на форуме:
2 сен. 2006

Руководитель Проекта
Настоящий Компьютерщик

Дата регистрации на форуме:
29 сен. 2001

Дата регистрации на форуме:
2 сен. 2006

Дата регистрации на форуме:
5 мар. 2006

Руководитель Проекта
Настоящий Компьютерщик

Дата регистрации на форуме:
29 сен. 2001

Дата регистрации на форуме:
2 сен. 2006

Дата регистрации на форуме:
2 сен. 2006

А вот теперь опять ясно к чему это было хых! )
Хотя сами средства не понятны!
Если перепрограмировать окна в приложении, то пока только ясно, что надо WM_CLOSE найти.
А как вбить туда свою апи и какую это не понятно. Но это я теоретически, вообще-то я соображал
как бы простыми хитростями виндоус спрятать окно от закрытия юзером.

А вообще тема интересная, мне жаль что софтмейкеры мало используют оконные функции,
например притякивание к краям, выравнивание и т.п. У некоторых вообще позиция окон не сохраняется
это вообще лажа, причём у солидных производителей.

Как services запустить некое своё приложение почти не возможно, там что-то не так
Ну прописал я калькулятор в службы, он всёравно не стартует
может прав доступа нет?

Читайте также: