WiX安装程序添加注册表项时出现问题

WiX安装程序添加注册表项时出现问题,wix,registry,installation,Wix,Registry,Installation,我想使用WiX安装程序添加一些注册表。这是我的密码: <DirectoryRef Id="TARGETDIR"> <Component Id="DisableWeakCipherSuites" Guid="7DBE2D50-3C00-4CEF-86CC-897C0C96E7FF" KeyPath="yes"> <RegistryKey Key="SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHA

我想使用WiX安装程序添加一些注册表。这是我的密码:

<DirectoryRef Id="TARGETDIR">
  <Component Id="DisableWeakCipherSuites" Guid="7DBE2D50-3C00-4CEF-86CC-897C0C96E7FF" KeyPath="yes">
    <RegistryKey Key="SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128" Root="HKLM" Action="createAndRemoveOnUninstall">
      <RegistryValue Name="Enabled" Value="0" Type="integer" />
    </RegistryKey>
    <RegistryKey Key="SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\Triple DES 168" Root="HKLM" Action="createAndRemoveOnUninstall">
      <RegistryValue Name="Enabled" Value="0" Type="integer" />
    </RegistryKey>
    <RegistryKey Key="SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128" Root="HKLM" Action="createAndRemoveOnUninstall">
      <RegistryValue Name="Enabled" Value="0" Type="integer" />
    </RegistryKey>
    <RegistryKey Key="SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128" Root="HKLM" Action="createAndRemoveOnUninstall">
      <RegistryValue Name="Enabled" Value="0" Type="integer" />
    </RegistryKey>
  </Component>
</DirectoryRef>

但安装程序并没有将这些键添加到CurrentControlSet中,而是将这些键添加到ControlSet001中

核心操作系统密钥:简单地看了这一点——当然,我并不擅长密码算法和协议——我对使用MSI来进行这一调整有点怀疑。由于不断变化的
操作系统保护功能
——这些功能很难预测,有时也会发生变化——我不确定黑客攻击是否是个好主意 这些键是直接的-尽管有些文章说它是可以的。如果 可能吗


组件GUID:将MSI用于此类设置时,还有一些进一步的挑战。主要问题是,一旦您将组件GUID指向某个键路径(注册表或其他),您的MSI就会认为它“拥有该键”,并会在卸载时愉快地将其删除。这可能不是你想要的。您需要意识到这一点,并在设计和测试中加以说明。您可以将组件设置为永久,使其处于卸载状态,或将组件设置为空GUID

自定义操作:可以使用在系统上下文中运行的自定义操作写入这些键。如果可以的话,但这个目的似乎是一个候选目标:这是一种新的,没有工具支持(据我所知)。因此,它适合作为一个自定义操作可以用来做的事情。这还将使您能够更好地控制在卸载和安装时执行的操作,检查已经存在的内容或在卸载时进行更明智的更改

请注意,自定义操作代码测试起来非常复杂,调试起来非常困难,并且在模拟(它在安全上下文中运行)、
排序和
调节(当它运行时-在什么安装模式下:安装、修复、修改、卸载等)方面存在挑战。简单明了

核心操作系统密钥:简单地看了这一点——当然,我并不擅长密码算法和协议——我对使用MSI来进行这一调整有点怀疑。由于不断变化的
操作系统保护功能
——这些功能很难预测,有时也会发生变化——我不确定黑客攻击是否是个好主意 这些键是直接的-尽管有些文章说它是可以的。如果 可能吗


组件GUID:将MSI用于此类设置时,还有一些进一步的挑战。主要问题是,一旦您将组件GUID指向某个键路径(注册表或其他),您的MSI就会认为它“拥有该键”,并会在卸载时愉快地将其删除。这可能不是你想要的。您需要意识到这一点,并在设计和测试中加以说明。您可以将组件设置为永久,使其处于卸载状态,或将组件设置为空GUID

自定义操作:可以使用在系统上下文中运行的自定义操作写入这些键。如果可以的话,但这个目的似乎是一个候选目标:这是一种新的,没有工具支持(据我所知)。因此,它适合作为一个自定义操作可以用来做的事情。这还将使您能够更好地控制在卸载和安装时执行的操作,检查已经存在的内容或在卸载时进行更明智的更改


请注意,自定义操作代码测试起来非常复杂,调试起来非常困难,并且在模拟(它在安全上下文中运行)、
排序和
调节(当它运行时-在什么安装模式下:安装、修复、修改、卸载等)方面存在挑战。简单明了。

什么样的服务器?终端服务器??或者您正在制作一个用于大规模分发的包?什么样的服务器?终端服务器??或者,您正在制作一个用于大规模分发的包?