如何在Windows Vista和W7中使用安全桌面?

时间:2009-11-11 13:58:59

标签: .net winapi

Windows Vista添加了一项名为“安全桌面”的新功能。它看起来很棒,真的引起了用户的注意。但现在,我想在我的.NET / C#或Delphi / WIN32应用程序中使用此桌面。并将其用于我自己的对话框,该对话框将询问用户大约5种不同但敏感的信息。

有没有办法在.NET中使用它? 有没有办法在WIN32中使用它?

3 个答案:

答案 0 :(得分:5)

你可能想问一下制作KeePass的团队。他们在程序中实现了在Windows Secure Desktop中为其数据库输入主密码的能力,以避免键盘记录器。

此外,他们的程序是开源的,源代码可以在这里下载:http://keepass.info/download.html

答案 1 :(得分:3)

如果您考虑一下,您会发现无法更改该安全桌面。

安全桌面位于普通桌面之上,其他所有内容都已禁用。并且它不允许正常程序干扰它(否则它将是无用的)。

AFAIK它也可以使用提升的权限运行,因此如果点击“是”,它可以提升它所要求的任何内容。

您可以做的就是尝试通过截取当前桌面的屏幕截图来模拟安全桌面,使图像变暗,然后创建顶层窗口,在其中绘制图像,然后在其上显示带有按钮的对话框(也作为顶级窗口)。 但是,当然,一个简单的alt-tab将允许用户切换回来。

答案 2 :(得分:2)

使用以下Windows API方法似乎可以实现Secure Desktop:

  • CreateDesktop()
  • SwitchDesktop()
  • CloseDesktop()
  • SetThreadDesktop()
  • GetThreadDesktop()
  • GetCurrentThreadId()

C# Secure Desktop implementation @ CodeProject {
{3}}