Inno-Setup和Windows UAC盾牌

时间:2013-01-24 10:26:00

标签: inno-setup uac

我遇到了一些UAC问题(我猜)。

我的问题是:某些应用程序上的UAC Shield Icon是什么意思。以及如何将此图标添加到我的Inno-Setup setup.exe?

2 个答案:

答案 0 :(得分:5)

Inno Setup安装程序默认需要管理员权限(如果未由安装程序创建者自定义)。如果用户未在Windows中更改UAC设置,则会触发UAC弹出窗口。

http://www.jrsoftware.org/ishelp/index.php?topic=setup_privilegesrequired

[Setup]PrivilegesRequired

有效值:  nonepoweruseradminlowest

默认值:  admin

描述: 此指令的效果取决于用户运行的Windows版本:

答案 1 :(得分:0)

正如其他人所说, Inno Setup 默认需要管理员权限,并会触发 UAC 提示。您可以使用PrivilegesRequired进行更改。这个问题是它没有在可执行文件上显示盾牌图标。

最好的方法是使用 Microsoft Manifest Tool 并更改可执行文件中嵌入的清单。它通常包含在 Microsoft SDK 中,可以从 Microsoft 免费下载。安装后, Manifest Tool 通常位于C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\bin\mt.exe。请注意,某些 SDK 不包含它。如果您不想安装 SDK ,我也会在https://github.com/eladkarako/mt中找到它。

  • 要从可执行文件中提取清单,请在命令行中执行此操作:"path to mt.exe" -inputresource:"path_filename.exe";#1 -out:"path_filename.exe.manifest"
  • 现在将asInvoker更改为requireAdministrator中的path_filename.exe.manifest(清单文件实际上是XML,因此您可以使用文本编辑器对其进行编辑)
  • 将清单放入可执行文件:"path to mt.exe" -manifest "path_filename.exe.manifest" -outputresource:"path_filename.exe";1
你去吧!可执行文件现在有了盾牌图标,无论如何!

还有另一种方法,它没那么有用。您可以将可执行文件更改为在注册表中以管理员身份运行(与右键单击相同 - >属性 - >兼容性 - >检查以管理员身份运行)。为此,请创建一个字符串值,其名称设置为可执行文件的路径+文件名,并包含数据/文本RUNASADMIN;必须在以下位置创建值:

  • HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers如果您想为当前用户更改
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers如果您想为所有用户更改它(这通常要求您拥有管理员权限)

它的问题在于,如果您移动可执行文件(您必须重新执行此操作)或将其交给其他人(它们必须执行此操作,或者必须运行某些操作系统),它不会延续这样做的工具)。这没用。