Wix RegistryKey权限

Mar*_*tin 1 security registry permissions wix wix3

我正在尝试安装只应由某些用户访问的注册表项.安装程序的每个其他部分都可以工作(它安装服务并注册组件).这是片段.

<Component Id="cmpXXX" Guid="{YYY}">
    <RegistryKey Root="HKLM" Key="Software\ZZZ" Action="createAndRemoveOnUninstall">
        <RegistryKey Key="Machine" Action="createAndRemoveOnUninstall">
            <Permission User="Administrators" GenericAll="yes" />
            <RegistryValue Type="string" Name="ID" Value="SecretID" />
            <RegistryValue Type="string" Name="Key" Value="SecretKey" />
        </RegistryKey>
    </RegistryKey>
</Component>
Run Code Online (Sandbox Code Playgroud)

安装程序完成后,所有用户都可以读取密钥(而不仅仅是管理员).我要安装的命令行是这样的:

msiexec /i installer.msi /l*v installlog.txt
Run Code Online (Sandbox Code Playgroud)

日志没有说明权限.当我在Orca中打开数据库时,LockPermissions表显示权限行,它看起来很好.

我究竟做错了什么?

Mar*_*tin 8

在我向每个RegistryValue添加权限条目后,它似乎开始工作了.

<Component Id="cmpXXX" Guid="{YYY}">
    <RegistryKey Root="HKLM" Key="Software\ZZZ" Action="createAndRemoveOnUninstall">
        <RegistryKey Key="Machine" Action="createAndRemoveOnUninstall">
            <Permission User="Administrators" GenericAll="yes" />
            <RegistryValue Type="string" Name="ID" Value="SecretID">
                <Permission User="Administrators" GenericAll="yes" />
            </RegistryValue>
            <RegistryValue Type="string" Name="Key" Value="SecretKey">
                <Permission User="Administrators" GenericAll="yes" />
            </RegistryValue>
        </RegistryKey>
    </RegistryKey>
</Component>
Run Code Online (Sandbox Code Playgroud)

但它具有锁定整个Software\ZZZ键的副作用.不太理想,但我可以解决这个问题.