Inno Setup 中的 IsAdmin 和 IsAdminInstallMode 有什么区别?

问题描述

两者之间的真正区别是什么:

我阅读了帮助但并没有真正理解它:

IsAdminInstallMode:如果安装程序正在运行,则返回 True 管理安装模式或者如果卸载正在运行 管理权限。

IsAdmin:如果安装/卸载,则返回 True 正在以管理权限运行。

管理安装 / 管理权限有什么区别?

我之所以这么问是因为在构建时我收到了这个警告:

警告:第 118 行,第 6 列:[提示] 支持函数“IsAdminLoggedOn”已重命名。改用“IsAdmin”或考虑使用“IsAdminInstallMode”。

我应该使用哪个,为什么?

解决方法

如文档所述,IsAdminInstallMode 如果安装程序在 administrative install mode 中运行,则返回 True。 管理安装模式意味着:

  • {group} 文件夹是在 All Users 配置文件中创建的。
  • 目录和 Shell 文件夹常量的“自动”形式映射到“通用”形式。
  • HKA、卸载信息和字体安装根密钥将为 HKEY_LOCAL_MACHINE。

是否使用管理员安装模式取决于PrivilegesRequired directive。如果安装程序需要特权,您基本上使用目录来声明。


虽然 IsAdmin(又名 IsAdminLoggedOn)为真,但如果安装程序以管理员权限执行。所以这是用户控制的东西,而不是安装程序。


IsAdminLoggedOn IsAdminInstallMode 含义
真的 真的 安装程序以管理员权限执行,并使用管理员权限为所有用户安装应用程序。
真的 错误 安装程序是使用管理员权限执行的,但不需要管理员权限,并且仍仅为当前用户安装应用程序。
错误 错误 安装程序不是以管理员权限执行的,不需要管理员权限,因为它只会为当前用户安装应用程序。
错误 真的 不可能。

IsAdmin 相当于 IsAdminLoggedOn。但通常情况下,您实际上想要的是 IsAdminInstallMode,而不是 IsAdminLoggedOn。这就是为什么该函数被重命名并拆分为这两个的原因。这取决于你测试什么。