【发布时间】:2015-10-10 03:33:15
【问题描述】:
Windows Vista 添加了一项名为“安全桌面”的新功能。它看起来很棒,确实吸引了用户的注意力。但是现在,我想在我的 .NET/C# 或 Delphi/WIN32 应用程序中使用这个桌面。并将其用于我自己的对话,该对话将询问用户大约 5 条不同但敏感的信息。
有没有办法在 .NET 中使用它? 有没有办法在WIN32中使用?
【问题讨论】:
Windows Vista 添加了一项名为“安全桌面”的新功能。它看起来很棒,确实吸引了用户的注意力。但是现在,我想在我的 .NET/C# 或 Delphi/WIN32 应用程序中使用这个桌面。并将其用于我自己的对话,该对话将询问用户大约 5 条不同但敏感的信息。
有没有办法在 .NET 中使用它? 有没有办法在WIN32中使用?
【问题讨论】:
您可能想询问制作 KeePass 的团队。他们在他们的程序中实现了在 Windows 安全桌面中输入数据库主密码的功能,以避免键盘记录器。
另外,他们的程序是开源的,源代码可以在这里下载:http://keepass.info/download.html
【讨论】:
如果你仔细想想,你会发现没有办法改变那个安全的桌面。
安全桌面高于普通桌面,其他所有功能均被禁用。并且不允许正常的程序对其进行干扰(否则就没用了)。
而且 AFAIK 还以提升的权限运行,因此如果您点击“是”,它可以提升所需的任何内容。
您所能做的就是尝试通过截取当前桌面的屏幕截图来模拟安全桌面,使该图像变暗,然后创建一个顶级窗口,在其中绘制该图像,然后显示一个带有按钮的对话框(也作为顶级窗口)。 当然,一个简单的 alt-tab 将允许用户切换回来。
【讨论】:
似乎安全桌面是通过使用以下 Windows API 方法实现的:
CreateDesktop()SwitchDesktop()CloseDesktop()SetThreadDesktop()GetThreadDesktop()GetCurrentThreadId()C# Secure Desktop implementation @ CodeProject
MSDN Window Station and Desktop Functions reference
【讨论】: