Настройка реестра для распределения портов и выборочной привязки
Начиная с Windows 2000, программа в наборе ресурсов Windows с именем Rpccfg.exe должна использоваться для задания привязок. Дополнительные сведения см. в комплекте ресурсов Windows для соответствующей версии операционной системы.
Для версий windows до Windows 2000 разделы реестра в следующей таблице указывают системные значения по умолчанию для динамического выделения портов и привязки к сетевым адаптерам на нескольких компьютерах. Сначала необходимо создать эти ключи, а затем указать соответствующие параметры.
Использование функции RpcServerUseProtseqEx влияет на эти параметры. Разработчики должны ознакомиться с параметрами реестра, описанными в этом разделе, и функции RpcServerUseProtseqEx при управлении выделением портов. Пример с тремя гипотетическими приложениями следует таблице ниже и демонстрирует взаимодействие этих параметров и RpcServerUseProtseqEx функции.
Если ключ отсутствует или содержит недопустимое значение, вся конфигурация помечается как недопустимая, а все RpcServerUseProtseq* вызовы через ncacn_ip_tcp или ncadg_ip_udp завершаются ошибкой.
Заметка
Порты, выделенные процессу, остаются выделенными до тех пор, пока этот процесс не умрет. Если все доступные порты используются, функция возвращает RPC_S_OUT_OF_RESOURCES.
Ключ порта | Тип данных | Описание |
---|---|---|
|
REG_MULTI_SZ | Задает набор диапазонов IP-портов, состоящих либо из всех портов, доступных из Интернета, либо всех портов, недоступных из Интернета. Каждая строка представляет один порт или включающий набор портов (например, 1000-1050, 1984). Если какие-либо записи находятся вне диапазона от 0 до 65535 или если не удается интерпретировать любую строку, время выполнения RPC будет рассматривать всю конфигурацию как недопустимую. |
|
REG_SZ | Y или N (не учитывает регистр). Если Y, порты, перечисленные в ключе портов, являются всеми доступными в Интернете портами на этом компьютере. Если N, порты, перечисленные в ключе портов, — это все порты, которые недоступны в Интернете. |
|
REG_SZ | Y или N (не учитывает регистр). Указывает политику по умолчанию системы. Если Y, процессы, использующие значение по умолчанию, будут назначены портам из набора доступных в Интернете портов, как описано выше. Если N, процессы, использующие значение по умолчанию, будут назначены портам из набора портов, доступных только для интрасети. |
|
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
UIP = значение ключа UseInternetPorts
Для этого примера значение ключа "Порты" равно 5000-5100 для каждой записи.
Приложение | PIA | UIP | Результат |
---|---|---|---|
InternetApp | Y | Y | Использует порты от 5000 до 5100 |
LocalApp | Y | Y | Использует порт за пределами диапазона 5000-5100 |
Приложение по умолчанию | Y | Y | Использует порты от 5000 до 5100 |
Интернет-приложение | Y | N | Использует порты от 5000 до 5100 |
LocalApp | Y | N | Использует порт за пределами диапазона 5000-5100 |
DefaultApp | У | 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 |
Связанные разделы