1

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

下面是VS生成的manifest文件

   <?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>
4

1 回答 1

1

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

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

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

阅读MSDN 上的应用程序清单

于 2013-11-01T14:37:50.553 回答