如何检查UAC目前是否已将屏幕变黑?

时间:2017-06-26 00:57:44

标签: c# .net uac

我正在尝试确定用户帐户控制当前是否在屏幕上显示/要求许可。

我有一个使用SlimDX的应用程序,当UAC接管屏幕时会导致DirectX设备丢失,我可以在UAC窗口关闭后重新创建设备,如果我之前尝试过这样的话(即使是在尝试{ } catch {}并循环应用程序崩溃)

我已经查看了pinvoke和msdn,我似乎无法找到任何相关信息。有人有想法吗?

作为备注:我不想以任何方式与这些提示进行交互,我只想检查它们是否已打开,以便我可以延迟创建DirectX设备。

2 个答案:

答案 0 :(得分:0)

如果屏幕上当前有UAC提示,则C:\Windows\System32\consent.exe将会运行。 There are ways to be notified with a event when a program starts or stops,您可以使用它们,让程序在consent.exe程序终止后执行重新创建DirectX设备的操作。

答案 1 :(得分:0)

很抱歉未能及时回答。但是我认为这可能会有所帮助。 据我所知,您不是在寻找一种方法来查看UAC是否正在运行,而是在寻找一种方法来检查UAC是否在阻塞屏幕。 我已经确认UAC正在使用SwitchDesktop切换到另一个桌面,因此您可以仅使用GetInputDesktop来获取“活动”桌面。然后使用GetUserObjectInformation检查其名称。 “普通”桌面应为默认桌面,而UAC将在WinLogon桌面上运行。 希望会有所帮助。