如果用户尝试注销则发出警告

如果用户尝试注销则发出警告

我希望某个本地用户永远不注销。就像这样愚蠢的问题,但我不一定关心按钮是否存在,我想弹出一个消息框,上面写着“请不要注销控制台”,然后有一个“确定”按钮,取消注销尝试。这可以在注销脚本中完成吗?

有组策略可以禁用开始菜单和 CTRL-ALT-DEL 对话框中的注销按钮。然而,我更希望的是 http://msdn.microsoft.com/en-us/library/ms811998.aspx,似乎不在 Server 2008 R2 中?还是我遗漏了?

我甚至尝试过在启动时禁用注销按钮,但它不起作用,正如 Matt 在这个类似问题上指出的那样

是否可以创建一个注销脚本,显示一个对话框警告用户不要注销,然后取消注销?

我知道这是一个愚蠢的需求——不幸的是,我无权改变或推翻。我已经用尽了这些选择。欢迎在评论中得到大量点赞,解释这真的是一个愚蠢的计划,显然只是在缓解许多系统性问题的症状,而不是解决任何问题。我完全理解这种做法实际上正在制造问题。我希望这样做,这样我就可以结束这份合同,永远不再与他们合作。

答案1

当我有机会这样做时,我有效禁用注销(和关机/重启)的方法是做三件事。

  1. 使用 GPO 或本地安全策略(或注册表设置)删除通过++Ctrl菜单可用的注销选项。AltDel

    • 要从 ++ 菜单中删除该选项Ctrl,您需要导航到-> Alt- > ->并启用该策略。 DelUser ConfigurationAdministrative TemplatesSystemCtrl+Alt+Del OptionsRemove Logoff

  2. 使用 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策略

  3. 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 运行......

相关内容