为端口分配和选择性绑定配置注册表
从 Windows 2000 开始,应使用 Windows 资源工具包中名为 Rpccfg.exe 的实用工具来设置绑定。 有关详细信息,请参阅 Windows 资源工具包以获取相应的操作系统版本。
对于 Windows 2000 之前的 Windows 版本,下表中的注册表项为动态端口分配和绑定到多宿主计算机上的 NIC 指定系统默认值。 必须先创建这些密钥,然后指定相应的设置。
使用 RpcServerUseProtseqEx 函数会影响这些设置。 在管理端口分配时,开发人员应熟悉本部分中介绍的注册表设置和 RpcServerUseProtseqEx 函数。 下表后面提供了一个包含三个假设应用程序的示例,并说明了这些设置和 RpcServerUseProtseqEx 函数如何互操作。
如果缺少某个键或它包含无效值,则整个配置将被标记为无效,并且通过 ncacn_ip_tcp 或 ncadg_ip_udp 进行的所有 RpcServerUseProtseq* 调用都将失败。
注意
分配给进程的端口将保持分配状态,直到该进程死亡。 如果所有可用端口都在使用中,该函数将返回RPC_S_OUT_OF_RESOURCES。
端口密钥 | 数据类型 | 说明 |
---|---|---|
|
REG_MULTI_SZ | 指定一组 IP 端口范围,这些范围由 Internet 上可用的所有端口或 Internet 上不可用的所有端口组成。 每个字符串表示一个端口或一组非独占端口 (,例如,1000-1050、1984) 。 如果任何条目在 0 到 65535 范围内,或者无法解释任何字符串,则 RPC 运行时会将整个配置视为无效。 |
|
REG_SZ | Y 或 N (不区分大小写) 。 如果为 Y,则端口键中列出的端口是该计算机上所有可用的 Internet 端口。 如果为 N,则端口键中列出的端口是所有无法使用 Internet 的端口。 |
|
REG_SZ | Y 或 N (不区分大小写) 。 指定系统默认策略。 如果为 Y,则使用默认值的进程将从 Internet 可用端口集分配端口,如上所述。 如果为 N,则使用默认值的进程将从仅限 Intranet 的端口集中分配端口。 |
|
REG_MULTI_SZ | 列出默认绑定的所有 NIC 的设备名称 (例如\Device\AMDPCN1) 。 如果该密钥不存在,服务器将绑定到所有 NIC。 如果该密钥确实存在,服务器将绑定到密钥中指定的 NIC,除非 NICFlags 字段设置为 RPC_C_BIND_TO_ALL_NICS。 如果键具有 null (“”) 值,则配置将被标记为无效,并且通过 ncacn_ip_tcp 或 ncadg_ip_udp 对 RpcServerUseProtseq* 的所有调用都将失败。 |
下表说明了三个示例应用程序如何受到上表中定义的设置的影响,以及如何使用 RpcServerUseProtseqEx 函数应用的设置也会受到影响。
在此示例中,考虑了三个假设的应用程序:
- InternetApp:此应用程序旨在公开到 Internet,并在传递给 RpcServerUseProtseqEx 函数的 RPC_POLICY 结构的 EndpointFlags 成员中指定了RPC_C_USE_INTERNET_PORT。
- LocalApp:此应用程序不适用于向 Internet 公开,并且已在传递给 RpcServerUseProtseqEx 函数的 RPC_POLICY 结构的 EndpointFlags 成员中指定了RPC_C_USE_INTRANET_PORT。
- DefaultApp:此应用程序在传递给 RpcServerUseProtseqEx 函数的 RPC_POLICY 结构的 EndpointFlags 成员中指定零。
下表根据上表所述的注册表项中指定的值解释了这些设置的影响。 对于格式设置注意事项,分配了以下代码:
PIA = PortsInternetAvailable 键值
UIP = UseInternetPorts 键值
对于此示例,对于每个条目,Ports 键的值为 5000-5100。
应用程序 | PIA | UIP | 结果 |
---|---|---|---|
InternetApp | Y | Y | 使用 5000 到 5100 之间的端口 |
LocalApp | Y | Y | 使用 5000-5100 范围之外的端口 |
DefaultApp | Y | Y | 使用 5000 到 5100 之间的端口 |
InternetApp | Y | N | 使用 5000 到 5100 之间的端口 |
LocalApp | Y | N | 使用 5000-5100 范围之外的端口 |
DefaultApp | Y | N | 使用 5000-5100 范围之外的端口 |
InternetApp | N | Y | 使用 5000-5100 范围之外的端口 |
LocalApp | N | Y | 使用 5000 到 5100 之间的端口 |
DefaultApp | N | Y | 使用 5000-5100 范围之外的端口 |
InternetApp | N | N | 使用 5000-5100 范围之外的端口 |
LocalApp | N | N | 使用 5000 到 5100 之间的端口 |
DefaultApp | N | N | 使用 5000 到 5100 之间的端口 |
相关主题