Vista UAC的屏幕截图和事件

时间:2009-03-29 16:54:56

标签: windows-vista uac capture

我开发了一个c#应用程序,它使用bitblt捕获屏幕,并使用对keybd_event和mouse_event的调用发送键盘和鼠标事件。

据微软称,我需要修改app.manifest:     requestedExecutionLevel level =“highestAvailable”uiAccess =“true”

签署应用程序并将其放在受信任的位置(程序文件)。

我已经完成了所有这些操作,以使应用程序在Vista下的高级权限下运行,但是当UAC对话框出现时,它不会捕获这些屏幕,键盘和鼠标事件也不会到达UAC对话框。

我猜UAC在不同的桌面上运行?如果是这样,我将如何捕捉到它?以及如何检测桌面何时切换到c#中的UAC对话框?或者我错过了一步?

2 个答案:

答案 0 :(得分:2)

UAC在安全桌面上运行,只允许在该上下文中运行在系统帐户上运行的受信任进程。

这是为了防止你想要实现的目标 - 处理欺骗或捕获用户输入。

答案 1 :(得分:1)

你做不到。 UAC桌面是安全的,因为它不允许任何人访问它。 要检测桌面切换事件,我会尝试使用SENSWTSRegisterSessionNotification。但它看起来并不乐观。