Windows 中分布式事务处理协调器服务中的新功能

本文介绍一些与 Windows 安全相关的更新和更改,以及它们如何影响 Microsoft 分布式事务处理协调器(MS DTC)服务。

原始产品版本:  时间
原始 KB 数:  899191

摘要

由于 Windows Server 2003 Service Pack 1 (SP1)和 Windows XP Service Pack 2 (SP2),一些与安全性相关的更新和更改会引入 Windows 并影响 MS DTC 服务。

通过使用 "组件服务" 管理工具中提供的 "更新的安全配置" 对话框可以访问这些更改。

将这些更改用于导致 DTC 通信对网络进行故障转移的默认安全设置。 在这种情况下,您可能会收到一条或多条错误消息或错误代码。

通过修改 "安全配置" 对话框中的设置,可以帮助控制 DTC 服务通过网络与远程计算机通信的方式。

本文介绍了以下操作系统中的 MS DTC 服务中的新功能:

  • Windows Server 2003 Service Pack 1 (SP1)
  • Windows XP Service Pack 2 (SP2)
  • Windows Vista
  • Windows Server 2008
  • Windows 7
  • Windows Server 2008 R2
  • Windows 8
  • Windows Server 2012
  • Windows 8.1
  • Windows Server 2012 R2

DTC 服务协调更新两个或更多受事务保护的资源的事务。 受事务保护的资源包括数据库、邮件队列和文件系统。 这些受事务保护的资源可以位于一台计算机上,也可以分布在多台网络计算机之间。

使用安全配置管理网络通信

在 Windows 中,DTC 服务使您能够更好地控制计算机之间的网络通信。 默认情况下,将禁用所有网络通信。 已增强 "DTC安全配置" 对话框,以便您可以管理这些通信设置。 若要查看 "安全配置" 对话框,请按照以下步骤操作:

  1. 启动 "组件服务" 管理工具。 为此,请选择 "开始",选择 "运行",键入dcomcnfg.exe,然后选择 "确定"
  2. 在组件服务管理工具的控制台树中,展开 "组件服务",展开 "计算机",右键单击 "我的电脑",然后选择 "属性"。
  3. 选择 " MSDTC " 选项卡,然后选择 "安全配置"。

安全配置中的新选项

以下信息介绍了 "安全配置" 对话框中提供的新选项。 此信息还介绍了受安全性配置对话框中的新选项影响的注册表项。

网络 DTC 访问

"网络 DTC 访问" 复选框使您可以确定 DTC 服务是否可以访问网络。 必须同时选中 "网络 Dtc 访问" 复选框和 "网络 dtc 访问" 复选框下的其他复选框之一,才能启用网络 dtc 事务。

"网络 DTC 访问" 复选框影响以下注册表项:

  • 注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security
  • 值名称:NetworkDtcAccess
  • 值类型: REG_DWORD
  • 值数据:0(默认值)

备注

在服务器群集上,"网络 Dtc 访问" 复选框将影响 MS DTC 资源注册表项下的共享群集注册表项中的值。 MS DTC 共享群集的注册表项位于 HKEY_LOCAL_MACHINE\Cluster\Resources\<MSDTC resource GUID> 位置。

默认情况下, NetworkDtcAccess 注册表项的值设置为0。 值0关闭 NetworkDtcAccess 注册表项。 若要打开 NetworkDtcAccess 注册表项,请将此注册表值设置为1。

允许入站

"允许入站" 复选框允许您确定是否允许来自远程计算机的分布式事务在本地计算机上运行。 默认情况下,此设置处于关闭状态。 若要启用此设置,请单击以选中 "网络 DTC 访问" 复选框,将以下注册表项设置为1:

  • 注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security
  • 值名称:NetworkDtcAccess
  • 值类型: REG_DWORD

若要禁用此设置,请单击以清除 "网络 DTC 访问" 复选框,将此注册表项设置为0。

"允许入站" 复选框将影响以下 REG_DWORD 注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security

  • NetworkDtcAccessTransactions
  • NetworkDtcAccessInbound

允许出站

"允许出站" 复选框允许您确定是否允许本地计算机启动事务并在远程计算机上运行该事务。 若要启用此设置,请选中 "网络 DTC 访问" 复选框,将以下注册表项设置为1:

  • 注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security
  • 值名称:NetworkDtcAccess
  • 值类型: REG_DWORD

若要禁用此设置,请清除 "网络 DTC 访问" 复选框,将此注册表项设置为0。

"允许出站" 复选框将影响以下 REG_DWORD 注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security

  • NetworkDtcAccessTransactions
  • NetworkDtcAccessOutbound

需要相互身份验证

"需要相互验证" 选项将添加对 Windows 中的相互身份验证的支持。 必需的相互身份验证设置当前可用于网络通信的最大安全模式。 对于同时运行 windows XP SP2 的客户端计算机和运行 Windows Server 2003 SP1 的服务器计算机,我们建议使用此事务模式。

必需的相互身份验证影响以下注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC

  • 注册表项1

    • 值名称:AllowOnlySecureRpcCalls
    • 值类型: REG_DWORD
    • 值数据:1
  • 注册表项2

    • 值名称:FallbackToUnsecureRPCIfNecessary
    • 值类型: REG_DWORD
    • 值数据:0
  • 注册表项3

    • 值名称:TurnOffRpcSecurity
    • 值类型: REG_DWORD
    • 值数据:0

使用相互身份验证设置的功能与所需的传入呼叫方身份验证所设置的功能不同。 "事务管理器通信" 下面列出的三个选项如下所示:

  • 必需的相互身份验证事务模式要求远程访问组件提供与本地计算机的经过身份验证的连接。 此身份验证由本地计算机上的模拟进行验证。 此外,如果在两个 DTC 服务之间执行远程访问通信,则此身份验证信息必须指定与远程事务模式计算机的主机名称匹配的计算机帐户。

  • 传入的呼叫者身份验证所需的事务模式只需要对远程连接进行身份验证。 此外,如果远程访问组件是 DTC 服务,则身份验证信息必须为计算机帐户。

  • "无需身份验证" 事务模式不会验证已验证的连接,也不会验证是否建立了已验证的连接。

在群集环境中,DTC 服务的计算机帐户指定群集节点的主机名。 在群集环境中,DTC 身份验证不使用事务模式的主机名。 在群集环境中,事务模式的主机名是虚拟服务的名称。 因此,不能在Mutual Authentication Required   群集环境中或在与此类计算机协商事务的任何计算机上使用相互身份验证所需的事务模式。 可以在运行 Windows Server 2003 SP1 的两个非群集计算机之间或在运行 Windows XP SP2 的两台计算机之间使用相互身份验证所需的事务模式。

在群集环境中,在基于 Windows Server 2003 的计算机之间使用传入的呼叫者身份验证所需的事务模式。

使用以下一个或多个条件为真时所需的 "无身份验证" 事务模式:

  • 在运行 Microsoft Windows 2000 的计算机之间的网络访问。
  • 网络访问在未配置相互信任的两个域之间。
  • 网络访问在属于工作组成员的计算机之间。

要求传入呼叫方身份验证

所需的传入呼叫者身份验证要求本地 DTC 服务通过仅使用加密的邮件与远程 DTC 服务进行通信。 仅对传入的连接进行身份验证。 仅 Windows Server 2003 SP1、Windows XP SP2 和更高版本的 Windows 支持此功能。 因此,仅当远程 DTC 服务运行在运行 Windows Server 2003 SP1、Windows XP SP2 或更高版本的 Windows 的计算机上时,才启用此选项。

要求的传入呼叫者身份验证影响以下注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC

  • 注册表项1

    • 值名称: AllowOnlySecureRpcCalls
    • 值类型: REG_DWORD
    • 值数据:0
  • 注册表项2

    • 值名称: FallbackToUnsecureRPCIfNecessary
    • 值类型: REG_DWORD
    • 值数据:1
  • 注册表项3

    • 值名称: TurnOffRpcSecurity
    • 值类型: REG_DWORD
    • 值数据:0

有关所需的传入呼叫方身份验证的详细信息,请参阅必需的相互身份验证部分。

不需要进行身份验证

无需进行身份验证,即可在 Windows 操作系统的早期版本之间实现操作系统兼容性。 启用此选项时,如果无法建立安全通信通道,则 DTC 服务之间的网络通信可以回退到未经身份验证的通信或非加密通信。

备注

如果远程 DTC 服务在运行 Microsoft Windows 2000 的计算机上运行,或者在运行 windows XP SP2 之前的 Windows XP 版本的计算机上运行,我们建议使用此设置。

您还可以使用 "无需身份验证" 来解决在未建立信任关系的域中的计算机上运行 DTC 服务的情况。 此外,您可以使用 "无需身份验证" 来解决在属于工作组成员的计算机上运行 DTC 服务的情况。

无需进行身份验证会影响以下注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC

  • 注册表项1

    • 值名称: AllowOnlySecureRpcCalls
    • 值类型: REG_DWORD
    • 值数据:0
  • 注册表项2

    • 值名称: FallbackToUnsecureRPCIfNecessary
    • 值类型: REG_DWORD
    • 值数据:0
  • 注册表项3

    • 值名称: TurnOffRpcSecurity
    • 值类型: REG_DWORD
    • 值数据:1

备注

在服务器群集上,这些注册表项位于共享群集注册表中。

新选项的重要性

"安全配置" 对话框中提供的新选项允许您将安全设置应用于传出或传入的网络通信。 默认情况下,在安装 Windows 之后,计算机不接受网络流量。 因此,计算机不易受到恶意用户的网络访问。 此外,还会更新通过网络发送的协议,以支持更安全的加密和相互验证的通信模式。 这有助于降低恶意用户拦截和接管 DTC 服务之间的通信的机会。

Windows 中的网络通信更改

已禁用来自 DTC 服务或传入 DTC 服务的网络通信。 例如,如果 COM + 对象尝试使用 DTC 事务更新位于远程计算机上的 Microsoft SQL Server 数据库,则此事务不会成功。 相反,如果计算机托管 SQL Server 数据库,而来自远程计算机的组件尝试使用 DTC 事务访问,则此事务不会成功。

以下问题与 DTC 服务相关:

由于网络连接问题,事务失败

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 有关如何备份和还原注册表的详细信息,请参阅如何在 Windows 中备份和还原注册表

如果由于网络连接问题而导致 DTC 事务失败,请单击以选中 "安全配置" 对话框中的以下复选框:

  • 单击以选中 "网络 DTC 访问" 复选框。

  • 根据您的要求,单击以选中 "事务管理器通信" 下的以下一个或两个复选框:

    • 允许入站
    • 允许出站

如果要以编程方式更改 Windows 中的这些设置,可以直接修改与要设置的设置对应的注册表设置。 修改注册表设置后,必须重新启动 DTC 服务。

我们建议您不要手动修改注册表以更改这些设置。 如果您手动修改这些注册表设置,则在基于 Windows Server 2003 SP1 的服务器群集上,群集服务可能会遇到问题。

Windows 防火墙阻止 DTC 流量

重要

这些步骤可能会增加安全风险。 这些步骤也可能会使计算机或网络更容易受到恶意用户或恶意软件(如病毒)的攻击。 我们建议使用本文介绍的过程,以使程序在设计为或实现特定的程序功能时能够正常运行。 在进行这些更改之前,我们建议您评估与在您的特定环境中实施此过程相关联的风险。 如果决定实施此过程,请采取任何适当的附加步骤来帮助保护系统。 我们建议您仅在确实需要此过程时才使用此过程。

如果使用 Windows 防火墙,则必须将 DTC 服务添加到 Windows 防火墙设置中的例外列表中。 为此,请按照下列步骤操作:  

  1. 选择 "开始",选择 "运行",键入firewall.cpl,然后选择 "确定"
  2. 在 " Windows 防火墙" 对话框中,选择 "例外" 选项卡,然后选择 "添加程序"。
  3. 依次选择 "浏览"、 C:\Windows\System32\msdtc.exe "查找" 和 "选择",然后选择 "打开"。
  4. 选择 "确定",选中 "程序和服务" 列表中的 " msdtc.exe " 复选框(如果尚未选中此复选框),然后选择 "确定"

已更改或添加的设置

下表介绍自早期版本的 Windows 中的 Windows XP SP2 后更改的注册表项。

项名 位置 以前的默认值 Windows XP SP2 默认值 可能的值
NetworkDtcAccess HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security 1 0 0 或 1
NetworkDtcAccessTransactions KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security 1 0 0 或 1
NetworkDtcAccessInbound HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security 不适用 0 0 或 1
NetworkDtcAccessOutbound HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security 不适用 0 0 或 1
AllowOnlySecureRpcCalls HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC 不适用 1 0 或 1
FallbackToUnsecureRPCIfNecessary HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC 不适用 0 0 或 1
TurnOffRpcSecurity HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC 不适用 0 0 或 1

备注

这些更改显示在基于 Windows Server 2003 SP1 的服务器群集上的共享群集注册表中。

与 DTC 服务更改相关联的错误代码

当您在计算机之间运行 DTC 事务时,您可能会收到以下错误代码之一:

  • 错误代码1

    MessageId: XACT_E_NETWORK_TX_DISABLED
    MessageText:
    事务管理器已禁用其对远程/网络事务的支持。
    #定义 XACT_E_NETWORK_TX_DISABLED HRESULT_TYPEDEF(0x8004D024L)

  • 错误代码2

    MessageId: XACT_E_PARTNER_NETWORK_TX_DISABLED
    MessageText:
    合作伙伴事务管理器已禁用其对远程/网络事务的支持。
    #定义 XACT_E_PARTNER_NETWORK_TX_DISABLED HRESULT_TYPEDEF(0x8004D025L)

适用对象

  • Windows Server 2012 R2
  • Windows 8.1
  • Windows 8
  • Windows 7
  • Windows Vista
  • Windows Server 2008
  • Windows Server 2003
  • Windows XP