非管理员模式下的注册表访问

Bri*_*ost 5 delphi registry permissions

我用Delphi编写的几个长期应用程序将其设置保留在注册表中.我已将HKEY_LOCAL_MACHINE用于"硬"设置(如配置首选项)和HKEY_CURRENT_USER用于"软"信息,例如窗口位置,MRU列表等.

现在我的用户告诉我,在非管理员(标准用户)模式下,应用程序不起作用.看,我看到当应用处于管理模式时,我无法读取放入HKEY_LOCAL_MACHINE的设置.

我有什么选择?我对标准模式以及它如何影响对注册表的访问几乎一无所知.任何信息赞赏.

Ken*_*ite 16

您可以作为非管理员用户从HKLM阅读; 你不能写信给它.

构造它时使用TRegistry.Create(KEY_READ),并将RootKey设置为HKLM.

var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create(KEY_READ)
  try
    Reg.RootKey := HKLM;
    // Read value here
  finally
    Reg.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

打开特定的注册表项时,也可以使用TRegistry.OpenKeyReadOnly(); 这有助于非管理员访问注册表区域.