每次启动应用程序时如何摆脱UAC

时间:2013-11-01 14:01:22

标签: c++ visual-studio installation registry uac

我已经使用Verisign签署了我的应用程序,将所有注册表变量存储在HKCU中,以便不要求管理员权限,但是UAC命令仍然提示用户他/她是否希望以下内容对他/她的计算机进行更改。我该如何防止这种情况发生。

下面显示了VS

生成的清单文件
   <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level='asInvoker' uiAccess='false' />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32'              name='Microsoft.Windows.Common-Controls'        version='6.0.0.0'                               processorArchitecture='x86'                   publicKeyToken='6595b64144ccf1df'               language='*' />
    </dependentAssembly>
  </dependency>
</assembly>

1 个答案:

答案 0 :(得分:1)

我怀疑,在应用程序清单中找到了对此行为的解释。您已指定请求的执行级别requireAdministrator。正是该设置导致显示UAC对话框。将其更改为asInvoker以避免请求提升。

....
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
....

Visual Studio IDE中可能有一个设置来控制它。我对此并不熟悉,但我希望您能够采用这种方式实现这一变化。好的,我看了一下。 IDE设置位于配置页面的链接器节点中,在“清单文件”部分下。有关该文档的文档可在此处找到:http://msdn.microsoft.com/en-us/library/bb384691.aspx

了解application manifests over on MSDN