Inno setup Innosetup-识别标准用户的管理员用户和dll注册
在innosetup应用程序安装过程中,我正在注册一个dll(用于windows右键单击上下文菜单和图标覆盖,类似于dropbox/tortoise cvs),并执行一些其他操作。到目前为止,我只为管理员用户安装应用程序。dll将在HKCR、HKLM中写入信息。现在,我计划支持其他非管理员用户(标准用户)的安装 我试过以下几种方法Inno setup Innosetup-识别标准用户的管理员用户和dll注册,inno-setup,pascalscript,Inno Setup,Pascalscript,在innosetup应用程序安装过程中,我正在注册一个dll(用于windows右键单击上下文菜单和图标覆盖,类似于dropbox/tortoise cvs),并执行一些其他操作。到目前为止,我只为管理员用户安装应用程序。dll将在HKCR、HKLM中写入信息。现在,我计划支持其他非管理员用户(标准用户)的安装 我试过以下几种方法 将管理员要求的权限更改为无 已将所有注册表更新从HKLM更改为HKCU 但是,如果我尝试安装应用程序,dll注册失败,因为无法在HKCR上写入。所以,我计划只为管
- 将管理员要求的权限更改为无
- 已将所有注册表更新从HKLM更改为HKCU
- 我们能否确定当前登录用户是否为管理员/高级用户
- 我们可以注册没有管理员权限的dll(写HKCR)吗
感谢您的回复。您可以检查当前用户是管理员还是超级用户:
[Code]
function IsRegularUser(): Boolean;
begin
Result := not (IsAdminLoggedOn or IsPowerUserLoggedOn);
end;
如果您正在将内容安装到HKLM,那么您已经为所有用户安装了内容,而不仅仅是管理员用户。所以你不应该改变这一点
在安装程序中正确的做法是永远不要向HKCU写入。(为了获得最佳效果,也不要写信给HKCR,而是写信给HKLM\Software\Classes。)谢谢,它工作得很好。关于在standard user中注册上下文菜单DLL有什么想法吗?请注意,只有当您使用
PrivilegesRequired=none
时,这才有用——对于每一个其他值,都没有意义,因为您可以保证拥有管理员或非管理员。(另外,“超级用户”是一个过时的概念,在XP中被弃用,在未来的版本中不存在。)虽然可以编写一个none
安装来适应该类型,但通常不值得重复逻辑和双重测试。只需选择admin
或lower
并坚持它。如果安装程序以管理员身份运行,安装程序如何知道使用哪个用户?我得到一个警告,我的安装程序可能没有预期的behaviorIt没有——这就是为什么建议不要这样做。HKCU用于应用程序本身,而不是安装程序。