UIAccess和Elevation不使用安全桌面

时间:2016-03-22 08:48:50

标签: .net windows uac local-security-policy

我正在编写类似于VNC的远程桌面软件,并希望通过利用UIAccess权限和安全策略提供的功能来捕获UAC提示。

理论值:

如下面给出的MSDN博客,您需要设置"安全设置\本地策略\安全选项\允许UIAccess应用程序在不使用安全桌面的情况下提示提升#34;财产到"启用"为了允许应用程序使用' UIAccess'允许进行“UAC提示”#39;在用户交互式桌面而不是安全桌面上显示。

https://blogs.msdn.microsoft.com/cjacks/2009/01/08/helpdesk-elevation-on-windows-vista-and-windows-7/

https://blogs.msdn.microsoft.com/cjacks/2009/10/15/using-the-uiaccess-attribute-of-requestedexecutionlevel-to-improve-applications-providing-remote-control-of-the-desktop/

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 forum instructions自我签署了该应用程序。

然后我手动将程序复制到Program Files(x86)文件夹中的子文件夹。

然后我启用了#34;允许UIAccess应用程序在不使用安全桌面的情况下提示提升#34;安全政策。

当我运行程序时(在我生成证书的同一系统中),我希望UAC提示符显示在用户的交互式桌面中。但它仍在“安全桌面”中运行。即使应用程序调用它也具有UIAccess权限。

可能出了什么问题?

1 个答案:

答案 0 :(得分:1)

uiAccess 功能异常危险。因此,Windows 只会在以下情况下尊重它:

  • 应用程序经过数字签名,并且
  • 位于受信任的位置之一例如C:\Program Files