Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查UAC当前是否正在关闭屏幕?_C#_.net_Uac - Fatal编程技术网

C# 如何检查UAC当前是否正在关闭屏幕?

C# 如何检查UAC当前是否正在关闭屏幕?,c#,.net,uac,C#,.net,Uac,我正在尝试确定用户帐户控制当前是否关闭屏幕/请求权限 我有一个使用SlimDX的应用程序,当UAC接管屏幕时,它会导致DirectX设备丢失,我可以在UAC窗口关闭后重新创建设备,如果我以前尝试过(即使在try{}catch{}循环中,应用程序也会崩溃) 我查看了pinvoke和msdn,但似乎找不到任何相关信息。有人有什么想法吗 请注意:我不想以任何方式与这些提示交互,我只想检查它们是否打开,以便延迟创建DirectX设备。如果UAC提示当前在屏幕上,则C:\Windows\System32\

我正在尝试确定用户帐户控制当前是否关闭屏幕/请求权限

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

我查看了pinvoke和msdn,但似乎找不到任何相关信息。有人有什么想法吗


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

如果UAC提示当前在屏幕上,则
C:\Windows\System32\approve.exe
将运行,您可以使用它们,并让您的程序在approve.exe程序终止后执行重新创建DirectX设备的操作。

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

安全桌面上会显示UAC同意提示,知道它处于活动状态是禁止的。关注一般故障模式,例如,当屏幕保护程序启动或用户锁定工作站(Win+L)时,也会发生这种情况。处理设备丢失的情况是必需的,使用StaseEvest.SISStutsCwitter事件是您所要求的,但它仅仅是一个创可贴。