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. 在元件服務系統管理工具的主控台樹中,展開 [元件服務],展開 [電腦],以滑鼠右鍵按一下 [我的電腦],然後選取 [內容]。 Properties
  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 支援此功能。 因此,如果遠端 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 SP2 XP 之前的 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 服務相關的問題:

因為網路連線問題而導致交易失敗

重要

這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必謹慎地依照這些步驟執行。 為了有多一層保護,請先備份登錄再進行修改。 如此一來,您就可以在發生問題時還原登錄。 如需如何備份及還原登錄的詳細資訊,請參閱 how to 備份及還原 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 SP2 起,在 Windows XP 中所做變更的登錄專案。

項目名稱 位置 先前的預設值 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