Поделиться через


Настройка реестра для выделения портов и выборочной привязки

Начиная с Windows 2000, для установки привязок следует использовать служебную программу в комплекте ресурсов Windows с именем Rpccfg.exe. Дополнительные сведения см. в пакете ресурсов Windows для соответствующей версии операционной системы.

Для версий Windows до Windows 2000 разделы реестра в следующей таблице указывают системные значения по умолчанию для динамического выделения портов и привязки к сетевым адаптерам на компьютерах с несколькими адресами. Сначала необходимо создать эти ключи, а затем указать соответствующие параметры.

Использование функции RpcServerUseProtseqEx влияет на эти параметры. Разработчики должны быть знакомы с параметрами реестра, описанными в этом разделе, и функцией RpcServerUseProtseqEx при управлении выделением портов. Пример с тремя гипотетическими приложениями следует таблице ниже и показывает, как эти параметры и функция RpcServerUseProtseqEx взаимодействуют.

Если ключ отсутствует или содержит недопустимое значение, вся конфигурация помечается как недопустимая, и все вызовы RpcServerUseProtseq*через ncacn_ip_tcp или ncadg_ip_udp завершатся ошибкой.

Примечание

Порты, выделенные для процесса, остаются выделенными до тех пор, пока этот процесс не будет замер. Если используются все доступные порты, функция возвращает RPC_S_OUT_OF_RESOURCES.

 

Ключ порта Тип данных Описание
HKEY_LOCAL_MACHINE   Software      Microsoft         Rpc            Internet               Ports
REG_MULTI_SZ Задает набор диапазонов IP-портов, состоящий из всех портов, доступных из Интернета, или всех портов, недоступных из Интернета. Каждая строка представляет один порт или инклюзивный набор портов (например, 1000–1050, 1984). Если какие-либо записи находятся за пределами диапазона от 0 до 65535 или если какая-либо строка не может быть интерпретирована, время выполнения RPC будет считать всю конфигурацию недопустимой.
HKEY_LOCAL_MACHINE   Software      Microsoft         Rpc            Internet               PortsInternetAvailable
REG_SZ Y или N (без учета регистра). Если задано значение Y, то все порты, перечисленные в разделе Порты, являются доступными в Интернете портами на этом компьютере. Если значение N, то в разделе Порты перечислены все порты, которые недоступны в Интернете.
HKEY_LOCAL_MACHINE   Software      Microsoft         Rpc            Internet               UseInternetPorts
REG_SZ Y или N (без учета регистра). Указывает системную политику по умолчанию. Если значение Y, процессам, использующим значение по умолчанию, будут назначены порты из набора доступных в Интернете портов, как определено выше. Если значение N, процессам, использующим значение по умолчанию, будут назначены порты из набора портов, доступных только в интрасети.
HKEY_LOCAL_MACHINE   System      CurrentControlSet         Services            Rpc               Linkage                  Bind
REG_MULTI_SZ Список имен устройств всех сетевых адаптеров, к которым требуется выполнить привязку по умолчанию (например, \Device\AMDPCN1). Если ключ не существует, сервер привязывается ко всем сетевым адаптерам. Если ключ существует, сервер привязывается к сетевым адаптерам, указанным в ключе, если для поля NICFlags не задано значение RPC_C_BIND_TO_ALL_NICS. Если ключ имеет значение NULL (""), конфигурация будет помечена как недопустимая и все вызовы RpcServerUseProtseq*через ncacn_ip_tcp или ncadg_ip_udp завершатся ошибкой.

 

В следующей таблице показано, как параметры, определенные в предыдущей таблице, влияют на три примера приложений, а также как влияют на параметры, применяемые с помощью функции RpcServerUseProtseqEx .

В этом примере рассматриваются три гипотетических приложения:

  • InternetApp. Это приложение предназначено для доступа к Интернету и указало RPC_C_USE_INTERNET_PORT в элементе EndpointFlagsструктуры RPC_POLICY , переданной в функцию RpcServerUseProtseqEx .
  • LocalApp. Это приложение не предназначено для доступа к Интернету и указало RPC_C_USE_INTRANET_PORT в элементе EndpointFlagsструктуры RPC_POLICY , переданной функции RpcServerUseProtseqEx .
  • DefaultApp: это приложение указывает ноль в элементе EndpointFlagsструктуры RPC_POLICY , передаваемой функции RpcServerUseProtseqEx .

В следующей таблице объясняется влияние этих параметров на основе значений, указанных в записях реестра, описанных в предыдущей таблице. В целях форматирования назначаются следующие коды:

PIA = PortsInternetAvailable Key value

UIP = Значение ключа UseInternetPorts

Для этого примера значение ключа Ports равно 5000–5100 для каждой записи.

Приложение основная сборка взаимодействия UIP Результат
InternetApp Да Да Использует порты от 5000 до 5100
LocalApp Да Да Использует порт за пределами диапазона 5000–5100
DefaultApp Да Да Использует порты от 5000 до 5100
InternetApp Да N Использует порты от 5000 до 5100
LocalApp Да N Использует порт за пределами диапазона 5000–5100
DefaultApp Да N Использует порт за пределами диапазона 5000–5100
InternetApp Нет Да Использует порт за пределами диапазона 5000–5100
LocalApp N Да Использует порты от 5000 до 5100
DefaultApp N Да Использует порт за пределами диапазона 5000–5100
InternetApp N Нет Использует порт за пределами диапазона 5000–5100
LocalApp Нет Нет Использует порты от 5000 до 5100
DefaultApp Нет Нет Использует порты от 5000 до 5100

 

RPC_POLICY

RpcServerUseAllProtseqsEx

RpcServerUseAllProtseqsIfEx

RpcServerUseProtseqEx

RpcServerUseProtseqEpEx

RpcServerUseProtseqIfEx

ncacn_ip_tcp

ncadg_ip_udp