我正在编写一个类似于 VNC 的远程桌面软件,并希望通过利用 UIAccess 权限和安全策略提供的功能来捕获 UAC 提示。
理论:
根据下面给出的 MSDN 博客,您需要将“安全设置\本地策略\安全选项\允许 UIAccess 应用程序在不使用安全桌面的情况下提示提升”属性设置为“启用”,以允许具有“UIAccess”权限的应用程序使“UAC 提示”显示在用户交互式桌面而不是安全桌面上。
https://blogs.msdn.microsoft.com/asklar/2012/03/14/remote-assistance-and-uac-prompts/
观察: 我用下面给定的代码编写了一个程序。
static void Main()
{
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.UseShellExecute = true;
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Verb = "runas";
p.Start();
}
然后我将以下内容添加到 app.manifest
<requestedExecutionLevel level="asInvoker" uiAccess="true" />
然后我按照MSDN 论坛说明对应用程序进行了自签名。
然后我手动将程序复制到 Program Files (x86) 文件夹中的子文件夹。
然后我启用了“允许 UIAccess 应用程序在不使用安全桌面的情况下提示提升”安全策略。
当我运行程序时(在我生成证书的同一系统中),我希望 UAC 提示会显示在用户的交互式桌面中。但即使调用它的应用程序具有 UIAccess 权限,它仍然在“安全桌面”中运行。
可能出了什么问题?