Windows 中分散式交易協調器服務的新功能

本文說明一些與 Windows 安全性相關的更新和變更,以及它們如何影響 Microsoft Distributed Transaction Coordinator (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 驗證不會使用交易模式的主機名。 在叢集環境中,交易模式的主機名是虛擬服務的名稱。 因此,您無法在叢集環境中,或在與這類計算機交涉交易的任何電腦上,使用「 需要相互驗證 」的交易模式。 您可以在執行 Windows Server 2003 SP1 的兩部非叢集電腦之間,或執行 Windows XP SP2 的兩部計算機之間,使用「 需要相互驗證 」交易模式。

在叢集環境中,使用 Windows Server 2003 型電腦之間的「 需要來電者驗證 」交易模式。

使用 [不需要驗證] 交易模式,其中一或多個條件成立:

  • 網路存取是在執行 Microsoft Windows 2000 的電腦之間進行。
  • 網路存取是在兩個未設定相互信任的網域之間進行。
  • 網路存取是在屬於工作組成員的計算機之間進行。

需要來電者驗證

需要傳入呼叫端驗證 ,本機 DTC 服務必須只使用加密的訊息來與遠端 DTC 服務通訊。 只會驗證傳入的連線。 只有 Windows Server 2003 SP1、Windows XP SP2 和更新版本的 Windows 支援這項功能。 因此,只有在執行 Windows Server 2003 SP1、Windows XP SP2 或更新版本 Windows 的電腦上執行遠端 DTC 服務時,才啟用此選項。

[需要來電者驗證] 會影響 下 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 XP SP2 自舊版 Windows 以來變更的登錄專案。

項目名稱 位置 先前的預設值 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:
    交易管理員已停用其對遠端/網路交易的支援。
    #define XACT_E_NETWORK_TX_DISABLED HRESULT_TYPEDEF ( 0x8004D024L)

  • 錯誤碼 2

    MessageId:XACT_E_PARTNER_NETWORK_TX_DISABLED
    MessageText:
    合作夥伴交易管理員已停用其對遠端/網路交易的支援。
    #define 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