3

在我的 innosetup 应用程序安装期间,我正在注册一个 dll(用于 Windows 右键单击​​上下文菜单和图标覆盖,类似于 dropbox/tortoise cvs)并执行一些其他操作。到目前为止,我只为管理员用户安装应用程序。该dll会在HKCR、HKLM中写入信息。现在,我也计划支持其他非管理员用户(标准用户)的安装。

我尝试了以下几件事,

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

但是,如果我尝试安装应用程序,由于无法在 HKCR 上写入,dll 注册失败。所以,我打算只为管理员用户注册 dll。对于其他普通用户,计划跳过 dll 注册并做其他事情。但我不知道,如何识别当前用户是管理员用户。任何人都可以让我知道以下事情,

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

感谢您的回复。

4

2 回答 2

3

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

[Code]
function IsRegularUser(): Boolean;
begin
    Result := not (IsAdminLoggedOn or IsPowerUserLoggedOn);
end;
于 2012-12-03T13:11:13.543 回答
1

如果您正在为 HKLM 安装东西,那么您已经在为所有用户进行安装,而不仅仅是管理员用户。所以你不应该改变它。

在安装程序中正确的做法是永远不要写信给 HKCU。(为了获得最佳结果,永远不要写信给 HKCR——而是写信给 HKLM\Software\Classes。)

于 2018-04-08T23:33:06.623 回答