有什么方法可以在Python中创建类似UAC的环境?我想基本上锁定工作站而不实际使用Windows锁定屏幕。除了输入密码以解锁工作站之外,用户不应该做任何事情。
答案 0 :(得分:3)
如果不与操作系统合作,则无法执行此操作。无论你做什么,Ctrl-Alt-Del都会允许用户规避锁定。
答案 1 :(得分:2)
您正在寻找Win32智能的API调用是CreateDesktop
和SetThreadDesktop
的组合。
就Vista +桌面内部而言,MSDN covers this和this blog post一样。这将为您提供了解您正在做什么的必要背景。
在使其看起来像UAC对话框方面 - 好吧,consent.exe
实际上截取了桌面的屏幕截图并将其复制到新桌面的背景中;否则,桌面将为空。
正如另一位回答者所指出的那样 - Ctrl + Alt + Delete仍然有效。没有办法 - 至少,不是没有更换键盘驱动程序,无论如何。
至于如何在Python中执行此操作 - 它看起来像pywin32实现SetThreadDesktop等。我不确定它与Win32的兼容性如何;如果您发现它无法正常工作,那么您可能需要python extension才能执行此操作。他们写起来并不像听起来那么难。
答案 2 :(得分:1)
您可以使用绘制覆盖整个屏幕的窗口的GUI工具包获得您想要的效果,然后全局抓取键盘事件。我不确定它是否会在Windows上捕获类似ctrl-alt-del的东西。
例如,使用Tkinter,您可以创建一个主窗口,然后调用overrideredirect
方法关闭所有窗口装饰(标准窗口标题栏和窗口边框,假设您的窗口管理器有这样的东西)。您可以查询监视器的大小,然后将此窗口设置为该大小。不过,我不确定这是否会让你覆盖OSX菜单栏。最后,您可以执行grab
,这将强制所有输入到特定窗口。
这有多有效取决于您希望用户“锁定”的方式。在* nix / X11系统上,您几乎可以完全锁定它们(因此请确保您可以在测试时远程登录,或者如果您的代码有错误,则可能必须强行重启)。在Windows或OSX上,效果可能会少一些。
答案 3 :(得分:1)
我会尝试使用pygame,因为它可以将鼠标锁定到自身,从而保留所有输入到自身,但我不会在没有太多测试的情况下调用此安全,ctr-alt-del可能会逃避它,无法尝试窗户现在。
(Bryan Oakley的答案并没有太大的不同,除了pygame)