参数
PrivilegesRequired
是lowest
,但问题仍然存在。我在一些机器上进行了测试(所有这些机器都是Windows 7),在其中一些机器上,我可以使用默认用户卸载,但有些机器不允许我卸载并要求管理员用户。
我没有在问题和互联网搜索中找到规律。
安装文件夹为C:\;
我没有使用
[Registry]
部分,并且[Dirs]
部分中的所有参数都使用Permissions: users-modify
。PrivilegesRequired
是lowest
,但问题仍然存在。[Registry]
部分,并且[Dirs]
部分中的所有参数都使用Permissions: users-modify
。需要考虑以下几点:
通常,安装文件夹是 %ProgramFiles% 或 %ProgramFiles(x86)%,这是一个由操作系统保护的文件夹。为了绕过此保护,安装程序必须更改安装文件夹的权限,以允许任何人删除。
在 [Dirs] 部分中,您可以使用 Permissions:users-modify
(如果需要,甚至可以更加宽松)。
[Registry] 部分同理。
InnoSetup 使用一个名为 unins000.exe
的文件进行卸载。该文件包含一个清单,其中默认请求特权 asInvoker
。据我所知,这不会随着 PrivilegesRequired
设置的更改而改变。到目前为止,asInvoker
应该没问题。只需注意一下,以防 InnoSetup 的新版本将其设置为更高的值。
对于其他访问者,如果没有使用InnoSetup:
如果您没有在安装程序中嵌入清单文件,Windows将使用安装程序检测启发式算法 (Microsoft, .pptx)。如果启发式算法结果为正,则Windows将自动请求管理员权限。因此,请使用清单文件并请求asInvoker
权限。
Inno Setup 卸载程序会请求权限提升,如果安装程序是以管理员或电源用户权限运行的(无论是否使用 PrivilegesRequired
显式要求这些权限)。
此信息存储在 unins000.dat
的第 14C 个字节(十六进制)/322(十进制)中。
它是一个位掩码,其中位 1(0x01)表示管理员权限,位 7(0x40)表示电源用户权限 [已过时]。
因此,如果您以管理员/高级用户的身份安装了应用程序,即使安装程序具有PrivilegesRequired=lowest
,卸载程序也会请求特权提升以获得相同的权限。检查unins000.dat
中的标志以查看是否是这种情况。