我正在尝试确定用户帐户控制当前是否在屏幕上显示/要求许可。
我有一个使用SlimDX的应用程序,当UAC接管屏幕时会导致DirectX设备丢失,我可以在UAC窗口关闭后重新创建设备,如果我之前尝试过这样的话(即使是在尝试{ } catch {}并循环应用程序崩溃)
我已经查看了pinvoke和msdn,我似乎无法找到任何相关信息。有人有想法吗?
作为备注:我不想以任何方式与这些提示进行交互,我只想检查它们是否已打开,以便我可以延迟创建DirectX设备。
答案 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桌面上运行。 希望会有所帮助。