Innosetup - 识别标准用户的管理员用户和dll注册

时间:2012-12-03 13:07:32

标签: inno-setup pascalscript

在我的innosetup应用程序安装期间,我正在注册一个dll(用于Windows右键单击上下文菜单和图标叠加,类似于dropbox / tortoise cvs)并执行其他一些东西。直到现在,我只为管理员用户安装应用程序。该DLL将在HKCR,HKLM中写入信息。现在,我计划支持其他非管理员用户的安装(标准用户)。

我尝试过以下几件事,

  • 将管理员所需的权限更改为无。
  • 将所有注册表更新从HKLM更改为HKCU。

但是,如果我尝试安装该应用程序,由于无法在HKCR上写入,dll注册失败。所以,我打算只为admin用户注册dll。对于其他普通用户,计划跳过dll注册并执行其他操作。但是我找不到,如何识别当前用户是管理员用户。任何人都可以告诉我以下事项,

  • 我们可以确定当前登录用户是否是管理员/超级用户?
  • 我们可以注册dll(编写HKCR)没有管理员权限吗?

感谢您的回复。

2 个答案:

答案 0 :(得分:3)

您可以检查当前用户是管理员还是超级用户:

[Code]
function IsRegularUser(): Boolean;
begin
    Result := not (IsAdminLoggedOn or IsPowerUserLoggedOn);
end;

答案 1 :(得分:1)

如果要向HKLM安装内容,那么您已经为所有用户安装,而不仅仅是管理员用户。所以你不应该改变它。

安装程序中正确的做法是永远不要写入HKCU。 (为了获得最佳效果,永远不会写入HKCR - 请写入HKLM \ Software \ Classes。)