我遇到了一些UAC问题(我猜)。
我的问题是:某些应用程序上的UAC Shield Icon是什么意思。以及如何将此图标添加到我的Inno-Setup setup.exe?
答案 0 :(得分:5)
Inno Setup安装程序默认需要管理员权限(如果未由安装程序创建者自定义)。如果用户未在Windows中更改UAC设置,则会触发UAC弹出窗口。
http://www.jrsoftware.org/ishelp/index.php?topic=setup_privilegesrequired
[Setup]
:PrivilegesRequired
有效值:
none
,poweruser
,admin
或lowest
默认值:
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
如果您想为所有用户更改它(这通常要求您拥有管理员权限)它的问题在于,如果您移动可执行文件(您必须重新执行此操作)或将其交给其他人(它们必须执行此操作,或者必须运行某些操作系统),它不会延续这样做的工具)。这没用。