4

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;

しかし、コンパイラはレジストリの最初の行でエラーを返します。

Parameter "Root" is not a valid value. 

これについて何か提案はありますか?

4

1 に答える 1

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;
于 2013-03-14T17:18:59.940 に答える