我希望某个本地用户永远不注销。就像这样愚蠢的问题,但我不一定关心按钮是否存在,我想弹出一个消息框,上面写着“请不要注销控制台”,然后有一个“确定”按钮,取消注销尝试。这可以在注销脚本中完成吗?
有组策略可以禁用开始菜单和 CTRL-ALT-DEL 对话框中的注销按钮。然而,我更希望的是 http://msdn.microsoft.com/en-us/library/ms811998.aspx,似乎不在 Server 2008 R2 中?还是我遗漏了?
我甚至尝试过在启动时禁用注销按钮,但它不起作用,正如 Matt 在这个类似问题上指出的那样
是否可以创建一个注销脚本,显示一个对话框警告用户不要注销,然后取消注销?
我知道这是一个愚蠢的需求——不幸的是,我无权改变或推翻。我已经用尽了这些选择。欢迎在评论中得到大量点赞,解释这真的是一个愚蠢的计划,显然只是在缓解许多系统性问题的症状,而不是解决任何问题。我完全理解这种做法实际上正在制造问题。我希望这样做,这样我就可以结束这份合同,永远不再与他们合作。
答案1
当我有机会这样做时,我有效禁用注销(和关机/重启)的方法是做三件事。
使用 GPO 或本地安全策略(或注册表设置)删除通过++Ctrl菜单可用的注销选项。AltDel
- 要从 ++ 菜单中删除该选项Ctrl,您需要导航到-> Alt- > ->并启用该策略。
Del
User Configuration
Administrative Templates
System
Ctrl+Alt+Del Options
Remove Logoff
- 要从 ++ 菜单中删除该选项Ctrl,您需要导航到-> Alt- > ->并启用该策略。
Del
使用 GPO 或本地安全策略(或注册表设置)来配置可通过“开始”菜单提供的注销、重启和关机选项。
- 要更改默认的“电源按钮”行为,请导航至
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
策略
- 要更改默认的“电源按钮”行为,请导航至
shutdown.exe
更改和的权限logoff.exe
(谢谢,Ryan!)以便没有用户帐户可以执行它。(如果您不必担心用户shutdown.exe
从命令行运行,则可以跳过此步骤。)- (我通常会保留一个具有权限的服务帐户或备份管理员帐户,以便我可以根据需要以最少的努力将其改回来)。
- 默认情况下,它位于
C:\Windows\systm32\
,且权限允许用户和管理员读取和执行,但保留对SYSTEM
和 的完全控制权Trusted Installer
。 Trusted Installer
也是所有者,因此要更改权限,您需要使用管理帐户获取所有权。
完成所有这些操作后,如果不经过一番努力或断开电源线,就无法注销、重新启动、关闭、休眠或使计算机进入睡眠状态。
现在我的服务器的开始菜单如下图所示(切换用户只是允许另一个用户登录):
Ctrl++菜单Alt如下Del所示:
答案2
我本来想将其添加为评论,但由于网站政策,我不能发表评论......
关于注销脚本,我不知道可以做什么。但在 C# Windows 窗体应用程序中,您可以注册 SystemEvents,如 SessionSwitch 和 SessionEnding。最后一个甚至在 EventArgs 中提供了一个 Cancel 属性。这样的 .Net 应用程序可以解决您的问题,但当然用户可以先关闭该应用程序(或从 TaskManager 中将其终止),然后仍然注销。
顺便说一句:是的,我知道有时必须做这样的愚蠢的事情:有些软件公司编写的程序应该是 Windows 服务,但在交互式会话中使用 GUI 运行......