Inno-Setup:无管理员权限的卸载

时间:2015-10-15 18:14:55

标签: windows inno-setup

使用Inno-Setup,我需要管理员用户安装的软件可以由默认用户卸载。

参数 PrivilegesRequired 最低,但问题仍然存在。

我在某些机器上进行了测试(所有这些都是Windows 7),有些我可以使用默认用户卸载,但还有其他机器不允许我卸载并请求管理员用户。

我没有确定问题和互联网搜索中的模式。

安装文件夹是C:\;

我没有使用[注册表]部分,[Dirs]部分中的所有参数都使用权限:users-modify

2 个答案:

答案 0 :(得分:0)

有几件事需要考虑:

  1. 通常,安装文件夹是%ProgramFiles%或%ProgramFiles(x86)%,这是受操作系统保护的文件夹。要绕过此保护,安装程序必须更改安装文件夹的权限以允许任何人删除。

    [Dirs]部分,您可以使用Permissions:users-modify(如果需要,甚至可以更宽松)。

  2. 类似于[Registry]部分。

  3. InnoSetup使用名为unins000.exe的文件进行卸载。此文件包含一个默认情况下请求权限asInvoker的清单。据我所知,这不会随PrivilegesRequired设置而改变。到目前为止,asInvoker应该没问题。如果新版本的InnoSetup将它设置得更高,请密切关注它。

  4. 对于其他访问者发现此信息而不使用InnoSetup:

    如果未在安装程序中嵌入清单,Windows将使用heuristics for installer detection (Microsoft, .pptx)。如果启发式结果为肯定结果,Windows将自动请求管理员提升。因此,请使用清单并请求asInvoker权限。

答案 1 :(得分:0)

如果安装程序是使用管理员或超级用户权限运行的,则Inno Setup卸载程序会请求权限提升(无论是否需要使用PrivilegesRequired明确指定安装程序)。

此信息存储在unins000.dat的字节14C(十六进制)/ 322(十进制)中。

它是位掩码,其中位1(0x01)表示管理员权限,位7(0x40)表示高级用户权限[已废弃]。

因此,如果您以管理员/超级用户身份安装应用程序,即使安装程序具有PrivilegesRequired=lowest,卸载程序也会请求权限提升以获得相同的权限。检查unins000.dat中的标记,看看是否是这种情况。