使用Inno-Setup,我需要由管理员用户安装的软件可以由默认用户卸载。Inno-Setup:无需管理员权限即可卸载
参数特权要求是最低,但问题依然存在。
我做了测试,在某些机器(所有这些都是Windows 7),并在几个我可以卸载使用默认的用户,但也有其他人并没有让我卸载,并要求管理员用户。
我没有在问题和互联网搜索中发现模式。
安装文件夹是C:\;
我不使用[注册]部分并在[DIRS]部分中的所有参数都使用权限:用户 - 修改
使用Inno-Setup,我需要由管理员用户安装的软件可以由默认用户卸载。Inno-Setup:无需管理员权限即可卸载
参数特权要求是最低,但问题依然存在。
我做了测试,在某些机器(所有这些都是Windows 7),并在几个我可以卸载使用默认的用户,但也有其他人并没有让我卸载,并要求管理员用户。
我没有在问题和互联网搜索中发现模式。
安装文件夹是C:\;
我不使用[注册]部分并在[DIRS]部分中的所有参数都使用权限:用户 - 修改
有要考虑几件事情:
一般,安装文件夹是%ProgramFiles%或%ProgramFiles(x86)%,它是受操作系统保护的文件夹。要绕过此保护,安装程序必须更改安装文件夹的权限以允许任何人删除。
在[Dirs]部分,您可以使用Permissions:users-modify
(或者如果需要,甚至更宽容)。
为[Registry]部分类似。
InnoSetup使用一种称为unins000.exe
用于卸载文件。该文件包含默认情况下请求特权asInvoker
的清单。据我所知,这不会因PrivilegesRequired
设置而改变。到目前为止,asInvoker
应该没问题。如果新版本的InnoSetup将其设置为更高的值,只要留意它就可以了。
对于其他游客发现这一点,并没有使用InnoSetup:
如果不嵌入您的安装清单,Windows将使用heuristics for installer detection (Microsoft, .pptx)。如果启发式结果为正,Windows将自动请求管理员提升。因此,请使用清单并请求asInvoker
权限。
安装文件夹是C:\,我没有使用[Registry]部分,并且[Dirs]部分中的所有参数都使用Permissions:users-modify。 –
我已经做了一些测试,它的工作,但有一些机器,我不能卸载软件,所以我认为有一种风景,我不考虑。 –
@RobsonPiernodeJesus:这是您应该添加到问题中的重要信息。 –
的Inno Setup的卸载程序请求的权限提升,如果安装了具有管理员或超级用户权限运行(无论它是否需要与PrivilegesRequired
那些明确)。
此信息被存储在unins000.dat
的字节14C(十六进制)/ 322(十进制)。
这是一个位掩码,其中第1位(0×01)表示管理员权限,和第7位(0×40)表示功率的用户权限。
所以,如果你安装的应用程序作为管理员/高级用户,即使安装有PrivilegesRequired=lowest
卸载程序将请求权限提升以获得相同的权限。检查unins000.dat
中的标志,看看是否是这种情况。
如何在unins000.dat文件中找到它? –
它位于安装文件夹中。 –
是的,但是我怎样才能读取这个文件并找到这些信息呢?当我用记事本打开时,会出现一些奇怪的字符。 –
非管理员没有Program Files文件夹的访问权限,所以如果这是程序的安装位置,那么你就是要求不可能的。 –
@MarkRansom:如果安装程序在安装过程中更改权限,这不应该适用,是吗? –
我已经做了一些测试,它的工作,但有一些机器,我不能卸载软件。 该软件被放置在C目录中。 –