注册表部分项中的根参数如何使用代码功能?

Fed*_*cci 3 inno-setup

我想将注册表项设置为HKLM用户是管理员还是HKCU普通用户。

我尝试了这个:

[Registry]
Root: "{code:DefRegRoot}"; Subkey: "Software\MyCompany\MySW\Settings"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"

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

function DefRegRoot(Param: String): String;
begin
  if IsRegularUser then
    Result := HKCU
  else
    Result := HKLM;
end;
Run Code Online (Sandbox Code Playgroud)

但是编译器在注册表的第一行返回一个错误:

Parameter "Root" is not a valid value. 
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

TLa*_*ama 5

我认为不可能将函数用作Root参数值获取器。我将通过使用以下Check条件来解决这种情况:

[Registry]
Root: HKCU; Subkey: "Software\MyCompany\MySW\Settings"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"; Check: IsRegularUser 
Root: HKLM; Subkey: "Software\MyCompany\MySW\Settings"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"; Check: not IsRegularUser

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