我对设置 DTC 通信的端口范围感到困惑。通过 dcomcnfg 设置端口(功能上)有什么区别(如中所述)这篇 NServiceBus 文章而不是像本文所述那样通过注册表进行配置Microsoft 支持文章? 是否有任何原因导致人们的行为不同,或者这些设置完全不同,只是看起来相似?
答案1
没有区别*,因为在两种情况下,注册表项Ports
下的值HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet
都在被修改。下面的屏幕截图显示了注册表修改(使用进程监控),使用 DCOMCNFG 设置端口范围时会发生这种情况:
无论如何,在某个时间点,微软建议直接编辑注册表,由于 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 来配置端口限制,如白皮书中所述。
*因此,除非您使用的是依赖于 Microsoft COM+ 2.0 的不受支持的 Windows 版本,否则上述错误不再适用,您可以自由使用 DCOMCNFG 或HKLM\SOFTWARE\Microsoft\RPC\Internet\Ports
直接编辑