6

我陷入了一些 UAC 问题(我猜)。

我的问题是:某些应用程序上的这个 UAC Shield 图标是什么意思?我如何将这个图标添加到我的 Inno Setup 中setup.exe

4

2 回答 2

6

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

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

[Setup]PrivilegesRequired

有效值: nonepoweruseradminlowest

默认值: admin

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

于 2013-01-24T10:51:17.563 回答
1

正如其他人所说,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"
  • 现在更改asInvokerrequireAdministratorin 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如果您想为所有用户更改它(这通常需要您具有管理员权限)

它的问题是,如果您移动可执行文件(您必须重新执行此操作)或将其交给其他人(他们必须这样做,或者必须运行一些工具来执行此操作),它不会继续存在. 这没有用。

于 2018-05-16T07:53:56.853 回答