警告用户如果他们尝试注销

我想要某个本地用户不注销。 永远。 这很像这个愚蠢的问题 ,但是我不一定在乎button是否在那里,我想popup一个消息框,提示“请不要注销控制台”,然后点击“确定”button,然后取消注销尝试。 这可以在注销脚本中完成吗?

在开始菜单和CTRL-ALT-DEL对话框中有组策略来禁用注销button。 然而,我想更像是http://msdn.microsoft.com/en-us/library/ms811998.aspx ,似乎不在服务器2008 R2? 还是我错过了?

我甚至试图在开始时禁用注销button ,但这不起作用, 正如Matt在这个类似的问题上指出的那样

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

我知道这是一个愚蠢的需要 – 不幸的是,我没有权力去改变或推倒。 我用尽了这些选项。 随意得到一大堆评论,解释说,这实在是一个愚蠢的计划,显然是减轻许多系统性问题的症状,而不是解决任何事情。 我完全明白,这一行动实际上是在制造问题。 我希望这样做,这样我可以完成这个合同,永远不会再与他们合作。

当我有机会这样做时,我已经有效地禁用了注销(和closures/重启)的方式是通过三件事情。

  1. 使用GPO或本地安全策略(或registry设置)删除通过Ctrl + Alt + Del菜单提供的注销选项。

    • 要从Ctrl + Alt + Del菜单中删除该选项,您需要导航到User Configuration – > Administrative Templates – > System – > Ctrl+Alt+Del Options并启用Remove Logoff策略。
  2. 使用GPO或本地安全策略(或registry设置)configuration通过“开始”菜单提供的可用注销,重新启动和closures选项。

    • 要更改默认的“电源button”行为,请导航到User Configuration – > Administrative Templates – > Start Menu and Taskbar并启用Change Start Menu power button策略。
      • 将其设置为Lock可能是您正在寻找的。
    • 要从开始菜单中删除关机/重启/hibernate/hibernatebutton,您需要导航到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并启用Start Menu and TaskbarRemove Logoff on the Start Menu策略
  3. 更改shutdown.exelogoff.exe的权限(谢谢,瑞安!),以便没有用户帐户可以执行它。 (如果您不需要担心从命令行运行shutdown.exe用户,则可以跳过此操作。)

    • (我通常会留下一个服务帐户或我的备用pipe理员帐户的权限,所以我可以根据需要将其更改,最less的努力)。
    • 默认情况下,它位于C:\Windows\systm32\ ,权限允许用户和pipe理员读取和执行,但保留SYSTEMTrusted Installer完全控制权限。
    • Trusted Installer也是所有者,因此要更改权限,您需要拥有pipe理帐户的所有权。

一旦你完成了这一切,没有办法注销,重新启动,关机,hibernate或睡眠电脑没有经过一点点的努力…或断开电源线。

现在我的服务器的开始菜单看起来像下面的图像(切换用户只允许其他用户login):

在这里输入图像描述

Ctrl + Alt + Del菜单看起来像:

在这里输入图像描述

我希望添加此作为评论,但感谢网站的政策,我不能评论…

关于注销脚本,我不知道可以做什么。 但在C#Windows窗体应用程序中,您可以注册SystemEvents,如SessionSwitch和SessionEnding。 最后一个甚至在EventArgs中提供了一个Cancel属性。 这样的.Net应用程序可以帮助你的情况,但当然用户可以先closures该应用程序(或从TaskManager中closures),然后仍然注销。

顺便说一下:是的,我知道这样的愚蠢的事情有时候是必须要做的:有些软件公司正在编写应该是Windows服务的程序,而是在交互式会话中运行GUI。