Назад | Перейти на главную страницу

Предупредить пользователя, если он попытается выйти из системы

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

существуют групповые политики для отключения кнопки выхода из системы в начальном меню и в диалоговом окне CTRL-ALT-DEL. Однако то, что я хотел бы, больше похоже http://msdn.microsoft.com/en-us/library/ms811998.aspx, которого, похоже, нет в сервере 2008 R2? Или мне это не хватает?

Я даже пытался отключить кнопку выхода при запуске, но это не работает, как указал Мэтт на этот аналогичный вопрос

Можно ли создать сценарий выхода из системы, который отображает диалоговое окно, предупреждающее пользователя не выходить из системы, а затем отменяет выход из системы?

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

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

  1. Используйте объекты групповой политики или локальные политики безопасности (или параметр реестра), чтобы удалить параметр выхода из системы, доступный через Ctrl+Alt+Del меню.

    • Чтобы удалить опцию из Ctrl+Alt+Del меню, вам нужно перейти к User Configuration -> Administrative Templates -> System -> Ctrl+Alt+Del Options и включить Remove Logoff политика.

  2. Используйте объекты групповой политики или локальные политики безопасности (или параметр реестра) для настройки доступных параметров выхода из системы, перезапуска и завершения работы, доступных через меню «Пуск».

    • Чтобы изменить поведение кнопки питания по умолчанию, перейдите к User Configuration -> Administrative Templates -> Start Menu and Taskbar и включить Change Start Menu power button политика.
      • Установив его на Lock вероятно, то, что вы ищете.
    • Чтобы удалить кнопки выключения / перезапуска / сна / гибернации из меню «Пуск», вам необходимо перейти к User Configuration -> Administrative Templates -> Start Menu and Taskbar и включить Remove and prevent access to the Shut Down, Restart, Sleep and Hibernate command
    • Чтобы удалить параметр выхода, перейдите к User Configuration -> Administrative Templates -> Start Menu and Taskbar и включить Remove Logoff on the Start Menu политика

  3. Измените разрешения на shutdown.exe и logoff.exe (спасибо, Райан!), чтобы ни одна учетная запись пользователя не могла его выполнить. (Если вам не нужно беспокоиться о запущенных пользователями shutdown.exe из командной строки вы можете пропустить это.)

    • (Обычно я оставляю учетную запись службы или учетную запись администратора резервного копирования с разрешениями, чтобы при необходимости я мог изменить ее обратно с минимальными усилиями).
    • По умолчанию это в C:\Windows\systm32\, а разрешения позволяют пользователям и администраторам читать и выполнять, но оставляют полный контроль для SYSTEM и Trusted Installer.
    • Trusted Installer также является владельцем, поэтому для изменения разрешений вам необходимо стать владельцем с учетной записью администратора.

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

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

И Ctrl+Alt+Del меню выглядит так:

Я бы предпочел добавить это в качестве комментария, но, благодаря политике сайта, я не должен комментировать ...

Что касается сценариев выхода из системы, я не знаю, что можно сделать. Но в приложении Windows Forms на C # вы можете зарегистрироваться для таких событий SystemEvents, как SessionSwitch и SessionEnding. Последний даже предоставляет свойство Cancel в EventArgs. Такое приложение .Net может помочь в вашем случае, но, конечно, пользователь может сначала закрыть это приложение (или убить его из TaskManager), а затем все равно выйти из системы.

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