none
Как в C# дать процессу права, что бы пользователь не смог его завершить через диспетчер задач? RRS feed

  • Вопрос

  • Как в C# дать процессу права, что бы пользователь не смог его завершить через диспетчер задач? Чтобы было сообщение по типу: "У вас не достаточно прав чтобы завершить процесс", "Отказано в доступе"и в таком роде.

    22 июля 2019 г. 13:49

Ответы

  • Процессу нельзя просто взять и дать такие права. Защита процесса от завершения - в общем случае, т.е. в том числе и от ПО, запущенного с правами администратора - это довольно сложный вопрос. Антивирусы, чтобы защитить свой процесс от завершения, на старых ОС обычно используют специальный модуль самозащиты - драйвер, который перехватывает вызовы к API ядра и блокирует попытки завершить процесс. Начиная с Windows 8 для этого появился встроенный механизм - защищенные службы. Естественно, смысл такой защиты - в первую очередь, чтобы вредоносное ПО не могло вынести процесс антивируса, невозможность завершить его через диспетчер задач здесь скорее побочный эффект. 

    Но если есть необходимость защитится только от пользователей с обычными правами, то все проще. Пользователи с обычными правами не могут даже видеть в диспетчере процессы других пользователей (в том числе системные), и не имеют прав на их завершение. Просто зарегистрируйте процесс как службу, запускаемую от какого-нибудь NETWORK SERVICE, и пользователи не смогут ее завершить.

    23 июля 2019 г. 5:25

Все ответы

  • Процессу нельзя просто взять и дать такие права. Защита процесса от завершения - в общем случае, т.е. в том числе и от ПО, запущенного с правами администратора - это довольно сложный вопрос. Антивирусы, чтобы защитить свой процесс от завершения, на старых ОС обычно используют специальный модуль самозащиты - драйвер, который перехватывает вызовы к API ядра и блокирует попытки завершить процесс. Начиная с Windows 8 для этого появился встроенный механизм - защищенные службы. Естественно, смысл такой защиты - в первую очередь, чтобы вредоносное ПО не могло вынести процесс антивируса, невозможность завершить его через диспетчер задач здесь скорее побочный эффект. 

    Но если есть необходимость защитится только от пользователей с обычными правами, то все проще. Пользователи с обычными правами не могут даже видеть в диспетчере процессы других пользователей (в том числе системные), и не имеют прав на их завершение. Просто зарегистрируйте процесс как службу, запускаемую от какого-нибудь NETWORK SERVICE, и пользователи не смогут ее завершить.

    23 июля 2019 г. 5:25
  • Спасибо.

    23 июля 2019 г. 7:25