Как отключить "Завершение работы" в меню ctrl+alt+delete для аутентифицированного пользователя, но оставить включенной кнопку питания на компьютере?
Я работаю над настройкой компьютера киоска на работе. Единственная большая проблема, с которой я столкнулся, это то, что я не могу отключить кнопку выключения в меню control+alt+delete, не отключив кнопку питания на самом компьютере (так что только сотрудники могут выключить ее). Отключение меню control+alt+delete полностью для определенных пользователей также допустимо.
Единственный реальный ответ, который я нашел, касается написания моей собственной заглушки GINA, и это немного выходит за рамки проекта (и моих способностей).
Дополнительные сведения: Оболочка проводника вообще не используется. В качестве оболочки используется программа, которая перезапускает приложение киоска, если оно умирает. Компьютер также будет заблокирован в шкафу, оставляя пользователям доступ только к монитору и кб / мыши.
6 ответов
regedit hacks -
(предотвратить) отключение без входа в систему:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system]
"shutdownwithoutlogon"=dword:00000000
работает до XP - не пробовал с> = win7
Ctrl + Alt + Del при входе в систему:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
"NoClose"=dword:00000001
Стартовое меню:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
"NoClose"=dword:00000001
Рассматривали ли вы использовать Microsoft SteadyState?
Также есть утилита, которая позволяет легко включать или отключать диспетчер задач.
Я думаю, что этот метод обращается к тому, что вам нужно. Я не уверен, влияет ли это на кнопку питания или нет (может зависеть от настроек питания BIOS).
Я нашел способ отключить меню ctrl+alt+del для аутентифицированных пользователей. Оказывается, мне нужно было использовать заглушку Джина (на самом деле, я изменил существующую заглушку).
Эта заглушка gina, очевидно, имеет несколько дополнительных функций, таких как сценарии принудительного входа / выхода из системы и отключение приглашения ctrl+alt+del перед входом в систему без редактирования реестра. Мне пришлось воспользоваться этим, так как пример Microsoft в SDK для платформы Windows XP не запустился должным образом для меня, и я не смог найти другую подходящую заглушку.
Единственное изменение, которое я внес в заглушку, - это изменить содержимое WlxLoggedOnSAS в gina.c на
#ifdef DEBUGLOG
fprintf(fpginalog,"WlxLoggedOnSAS, SasType=%i.\n",dwSasType);
fflush(fpginalog);
#endif
if (dwSasType == WLX_SAS_TYPE_CTRL_ALT_DEL)
{
/* Eat the ctrl+alt+del event */
return WLX_SAS_ACTION_NONE;
}
else{
return GWlxLoggedOnSAS( pWlxContext, dwSasType, pReserved );
}
Затем я собрал проект в Visual Studio и переместил получившуюся новинку в C:\Windows\system32
Последним шагом было добавление ключа реестра, чтобы он загружал заглушку gina при запуске.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"GinaDLL"="C:\\windows\\system32\\newgina.dll"
Недостатки:
Это также отключает Ctrl + Alt + Del для администраторов, но у них есть меню "Пуск", так что это не проблема для меня. Возможно, можно исправить с небольшой модификацией
Если вы не используете оболочку проводника, вы не можете выйти из системы, перезагрузка компьютера - единственный вариант. Возможно, можно использовать другую программу для регистрации горячей клавиши для выхода из системы.
Экран мерцает в течение доли секунды при нажатии Ctrl + Alt + Del.
Может не работать на XP SP3 или Vista (согласно нескольким темам на других сайтах)
Замечания:
У меня нет бинарной версии модифицированной заглушки прямо сейчас (и вход в Google OpenID заблокирован на работе, поэтому я не могу загрузить ее оттуда), но если вы хотите скомпилировать заглушку самостоятельно, просто получите Visual C++ Express Edition и откройте проект, затем замените код внутри WlxLoggedOnSAS в gina.c на код, упомянутый ранее. Когда вы создаете его, вы должны в конечном итоге с newgina.dll
Я забыл зарегистрироваться ранее и не могу добавить комментарий, поэтому я просто добавлю это в качестве ответа.
Я немного углубился в проект, чтобы рассмотреть возможность использования другого метода блокировки компьютера (например, SteadyState), и все, кроме кнопки выключения и ctrl+alt+delete, заблокированы, но я буду помнить об этом для будущее.
Что касается компьютера, являющегося частью домена, нет, он не находится в домене, а пользователь является локальным пользователем.
Я посмотрю на метод, предложенный завтра Зеррисом, и посмотрю, будет ли он делать то, что мне нужно.
Не уверен, является ли этот киоск частью домена. Если вы входите в систему как определенный пользователь, вы можете создать объект групповой политики, который предотвращает завершение работы, и связать его с подразделением, в котором находится этот пользователь. Логины ваших сотрудников не будут находиться в OU, поэтому они не получат объект групповой политики и сохранят возможность выключения через меню "Пуск". Мы делаем это в нашем колл-центре, где мы хотим, чтобы ПК оставляли включенным на ночь, чтобы их можно было исправить. Если они действительно должны быть закрыты, администратор или менеджер могут войти и завершить работу.