【发布时间】:2011-10-18 13:12:28
【问题描述】:
我有兴趣在临时会话中启动一个窗口,例如 UAC 提示的显示方式。有几个人对这个概念感兴趣,所以我想我会在这里问。本质上,我们想要的是一个提升的窗口,例如 UAC“你确定要<...>”提示,但带有任意窗口。最终目标是防止窗口事件挂钩和密码输入过程中可能发生的各种其他问题。
我快速浏览了 UAC API 和其他一些地方,但没有什么特别有用的地方。显然,UAC 提示被提升到他们自己的桌面会话不知何故,所以必须有一种方法来以这种方式创建窗口。
【问题讨论】:
-
我认为您不了解这其中的复杂性... Microsoft 制作了 UAC 提示,因此很难重新创建。这里的根本问题是什么?也许有人可以提出比重新创建 UAC 提示更好的建议。
-
据我所知,他们设计它是为了让其他应用程序不会干扰 UAC 提示本身。以类似的方式(即在临时桌面会话中)显示您自己的提示并不是他们试图阻止的。
-
在现有会话之上创建一个新的 桌面会话 非常复杂,而且可能不适合 C#(想想 Win32/C++)。相反,为什么不只在最顶层显示一个全屏、无边框、透明的表单,然后在其上方显示另一个窗口/提示?
-
因为这并不能解决用户模式键盘挂钩的问题。创建第二个桌面会话并不困难或迟钝,它是一个文档化的 Windows API。来自 sysinternals 的
desktops工具做得很好。诚然,我想要一个稍微不同的结果,但仍然......
标签: c# windows security winapi uac