Как я могу ограничить доступ к определенным программам в Windows?

Я создаю программное обеспечение для управления временем в C#. Как я могу гарантировать, что, когда кто-то не вводил записи о времени в предыдущий день, доступ к системе ограничен, когда он / она входит в Windows?

Ex. Заблокировать интернет или заблокировать компьютер

2 ответа

Существует несколько способов вызвать снижение функциональности с различными уровнями сложности и функциональности.

Прокси

На мой взгляд, самое простое "чистое" решение - написать сервис, который работает на локальном компьютере и работает как HTTP-прокси. Локальные браузеры настроены на использование прокси-сервера, и по вашему желанию вы возвращаете статическую страницу, говорящую о том, что для продолжения пользователь должен ввести пробой.

Пользователь может обойти прокси-сервер, изменив настройки прокси-сервера или используя браузер, отличный от системного по умолчанию. Обе эти проблемы могут быть преодолены большинством ИТ-отделов с помощью групповой политики.

Связанный: Библиотека прокси с открытым исходным кодом для.Net

Сложность: умеренная Риск: умеренная Eww фактор: низкая Эффективность: умеренная

Одиночное заключение

Во многом так же, как скринсейвер, вы можете создать дополнительный рабочий стол и показать свое собственное окно на изолированном рабочем столе. После того, как вы собрали необходимую информацию, вернитесь на рабочий стол по умолчанию и уничтожьте созданный вами.

Связанный: Переключение рабочего стола - CodeProject, Инструменты Defrag - Рабочие столы

Сложность: умеренная Риск: низкая Eww фактор: низкая Эффективность: высокая

Нет, нет, не может иметь

Если мы стремимся к простоте реализации, возможно, самое простое, что можно сделать, это просто отправить WM_CLOSE к любому новому процессу, который нам не нравится, который открывается. Вы можете использовать WindowOpenedEventизучить новые окна, затем вызватьProcess.CloseMainWindowесли вы обнаружите, что это процесс, который вам не нравится.

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

Сложность: низкаяРиск: умеренная Eww фактор: высокая Эффективность: низкая

Сменный корпус

Если вы указываете альтернативное значение дляREG_SZназванныйShellрасположен в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon, вы можете заставить вашу программу работать вместо explorer, Затем вы можете проверить, был ли пользователь непослушным или милым, и затем запустить его условно. explorer,

Пользователь все еще может обойти ваше приложение, запустивexplorerсам с помощью диспетчера задач или иным образом.

Сложность: низкаяРиск: высокая Eww фактор: умеренный Эффективность: умеренная

SRP или AppLocker

Групповая политика предоставляет два способа ограничения того, какое программное обеспечение запускается на ПК: Политики ограниченного использования программ и AppLocker. Оба имеют свои достоинства и оба очень разные в том, что они стремятся контролировать. Вы можете программно создавать политики для использования HKCU\Software\Policiesключ, изучивadmxфайлы или с помощью установленных API.

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

Связанный: Как программно изменить параметр локальной групповой политики

Сложность: умереннаяРиск: высокая Eww фактор: высокая Эффективность: высокая

Пользовательский интерфейс входа

Вы можете использовать пользовательский интерфейс входа в систему, чтобы пользователь даже не мог войти, если его часы не отправлены. Это кажется немного тяжелым, но эй, это твоя прерогатива. GINA заменили в Vista на новую архитектуру, но на MSDN есть отличный пример. Вы будете работать в неуправляемом коде для этого.

Если пользователь может войти в систему с помощью другого средства (например, биометрической или смарт-карты), он может не увидеть ваш диалог.

Сложность: высокая Риск: низкая Eww фактор: низкая Эффективность: высокая

Active Directory

Если вы работаете в домене, вы также можете просто отключить учетную запись пользователя через ADSI или LDAP. Однако это может быть необратимым в разумные сроки, и во многих случаях крайне нежелательно из-за интеграции с другими системами (на ум приходят контроллеры доступа к двери... нет карты времени = нет доступа к зданию).

Кроме того, из-за задержек распространения в больших доменах любое изменение может занять минуты или часы, пока пользователь не будет затронут.

Сложность: низкая Риск: высокая Eww фактор: высокая Эффективность: низкая

Если вы находитесь в домене, использующем Active Directory, вы можете заблокировать их учетную запись, что помешает им войти в систему.

Другие вопросы по тегам