Rpc

通過 Registry 和 dcomcnfg 設置 DTC 埠範圍有什麼區別?

  • March 30, 2016

我對設置 DTC 通信的埠範圍感到困惑。通過 dcomcnfg 設置埠(如本 NServiceBus 文章中所述)與通過系統資料庫配置埠(如本Microsoft 支持文章中所述)有什麼區別(在功能上) ?是否有任何理由會表現出不同的行為,或者這些完全不同的設置只是看起來相似?

沒有區別*,因為在這兩種情況下,系統資料庫項下的Ports值都在修改。HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet下面的螢幕截圖顯示了系統資料庫修改(使用ProcMon擷取),這是在使用 DCOMCNFG 設置埠範圍時發生的:

DCOMCNFG 系統資料庫埠更改

無論如何,在某個時間點,Microsoft 建議直接編輯系統資料庫,因為 DCOMCNFG 內部存在一個錯誤,該錯誤記錄在KB201911下(請注意,以下聲明確認 DCOMCNFG 實際上正在修改HKLM\SOFTWARE\Microsoft\RPC\Internet\Ports):

當為協議指定埠範圍(例如 4000-4010)時,寫入系統資料庫項 HKLM\SOFTWARE\Microsoft\RPC\Internet\Ports(名為 REG_MULTI_SZ)的值為“4000 - 4010”。在“-”之前和之後添加一個空格。

還有另一個 Microsoft KB ( KB217351 ),它指的是這個錯誤,並提出以下建議:

如果您使用 DCOMCNFG 實用程序配置埠限制,您可能會遇到已知的 DCOMCNFG 錯誤。不要使用 DCOMCNFG 實用程序,而是使用 Regedt32.exe 來配置白皮書中所述的埠限制。

*因此,除非您使用的是不支持的 Windows 版本,它依賴於 Microsoft COM+ 2.0,否則上述錯誤不再適用,您可以自由使用 DCOMCNFG 或HKLM\SOFTWARE\Microsoft\RPC\Internet\Ports直接編輯

引用自:https://serverfault.com/questions/765988