Службы и RPC/TCP
Начиная с Windows Vista диспетчер управления службами (SCM) поддерживает удаленные вызовы процедур по протоколу управления передачей (RPC/TCP) и именованным каналам (RPC/NP). Функции SCM на стороне клиента по умолчанию используют RPC/TCP.
RPC/TCP подходит для большинства приложений, которые удаленно используют функции SCM, такие как средства удаленного администрирования или мониторинга. Однако для обеспечения совместимости и производительности некоторым приложениям может потребоваться отключить RPC/TCP, задав значения реестра, описанные в этом разделе.
Когда служба вызывает удаленную функцию SCM, клиентская служба SCM сначала пытается использовать RPC/TCP для взаимодействия с SCM на стороне сервера. Если сервер работает под управлением версии Windows, которая поддерживает RPC/TCP и разрешает трафик RPC/TCP, подключение RPC/TCPP будет выполнено успешно. Если сервер работает под управлением версии Windows, которая не поддерживает RPC/TCP или поддерживает RPC/TCP, но работает за брандмауэром, который разрешает только трафик именованного канала, время ожидания подключения RPC/TCP и SCM повторяет попытку подключения с RPC/NP. В конечном итоге это будет успешно, но может занять некоторое время (обычно более 20 секунд), что приведет к блокировке функции OpenSCManager .
TCP не содержит учетные данные пользователя, указанные командой net use . Таким образом, если RPC/TCP включен и sc.exe используется для получения доступа к указанной службе, команда может завершиться ошибкой, если доступ запрещен. Отключение RPC/TCP на стороне клиента приводит к тому, что команда sc.exe будет использовать именованный канал, который содержит учетные данные пользователя, поэтому команда будет выполнена успешно. Сведения о sc.exe см. в разделе Управление службой с помощью SC.
Примечание
Служба не должна предоставлять явные учетные данные для команды net use , так как эти учетные данные могут быть случайно переданы за пределами службы. Вместо этого служба должна использовать олицетворение клиента для олицетворения пользователя.
Значения реестра RPC/TCP
RPC/TCP управляется значениями реестра SCMApiConnectionParam, DisableRPCOverTCP и DisableRemoteScmEndpoints, которые находятсяв разделеуправления HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\. Все эти значения имеют REG_DWORD тип данных. В следующих процедурах показано, как использовать эти значения реестра для управления RPC/TCP.
В следующей процедуре описывается, как отключить RPC/TCP на стороне клиента.
Отключение RPC/TCP на стороне клиента
- Объедините значение реестра SCMApiConnectionParam со значением маски 0x80000000.
- Перезапустите приложение, которое вызывает функцию OpenSCManager .
В следующей процедуре описывается отключение ПРОТОКОЛА TCP на стороне сервера.
Отключение TCP на стороне сервера
- Задайте для параметра реестра DisableRPCOverTCP значение 1.
- Перезапустите сервер.
В следующей процедуре описывается отключение RPC/TCP и RPC/NP на сервере (например, для уменьшения уязвимой зоны).
Отключение RPC/TCP и RPC/NP на сервере
- Задайте для параметра реестра DisableRemoteScmEndpoints значение 1.
- Перезапустите сервер.
Значение реестра SCMApiConnectionParam также можно использовать для указания интервала времени ожидания RPC/TCP в миллисекундах. Например, значение 30 000 указывает интервал времени ожидания в 30 секунд. Значение по умолчанию — 21 000 (21 секунда).