Compartir a través de


Servicios y RPC/TCP

A partir de Windows Vista, el administrador de control de servicios (SCM) admite llamadas a procedimientos remotos en el Protocolo de control de transmisión (RPC/TCP) y canalizaciones con nombre (RPC/NP). Las funciones SCM del lado cliente usan RPC/TCP de forma predeterminada.

RPC/TCP es adecuado para la mayoría de las aplicaciones que usan funciones SCM de forma remota, como herramientas de administración remota o supervisión. Sin embargo, para la compatibilidad y el rendimiento, es posible que algunas aplicaciones necesiten deshabilitar RPC/TCP estableciendo los valores del Registro descritos en este tema.

Cuando un servicio llama a una función SCM remota, el SCM del lado cliente primero intenta usar RPC/TCP para comunicarse con el SCM del lado servidor. Si el servidor ejecuta una versión de Windows que admite RPC/TCP y permite el tráfico RPC/TCP, la conexión RPC/TCPP se realizará correctamente. Si el servidor ejecuta una versión de Windows que no admite RPC/TCP, o admite RPC/TCP, pero funciona detrás de un firewall que solo permite el tráfico de canalización con nombre, la conexión RPC/TCP agota el tiempo de espera y el SCM vuelve a intentar la conexión con RPC/NP. Esto se realizará correctamente, pero puede tardar algún tiempo (normalmente más de 20 segundos), lo que hace que la función OpenSCManager aparezca bloqueada.

TCP no incluye credenciales de usuario especificadas con un comando net use. Por lo tanto, si RPC/TCP está habilitado y sc.exe se usa para intentar acceder al servicio especificado, el comando podría producir un error con el acceso denegado. Deshabilitar RPC/TCP en el lado cliente hace que el comando sc.exe use una canalización con nombre que lleve credenciales de usuario, por lo que el comando se realizará correctamente. Para obtener información sobre sc.exe, vea Control de un servicio mediante SC.

Nota

Un servicio no debe proporcionar credenciales explícitas a un comando net use, ya que esas credenciales podrían compartirse accidentalmente fuera de los límites del servicio. En su lugar, el servicio debe usar suplantación de cliente para suplantar al usuario.

 

Valores del Registro RPC/TCP

RPC/TCP se controla mediante el SCMApiConnectionParam, DisableRPCOverTCPy valores del Registro DisableRemoteScmEndpoints, que están todos en la clave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control. Todos estos valores tienen un tipo de datos REG_DWORD. Los procedimientos siguientes muestran cómo usar estos valores del Registro para controlar RPC/TCP.

En el procedimiento siguiente se describe cómo deshabilitar RPC/TCP en el lado cliente.

Para deshabilitar RPC/TCP en el del lado cliente

  1. Combine el valor del Registro SCMApiConnectionParam con el valor de máscara 0x80000000.
  2. Reinicie la aplicación que llama a la funciónOpenSCManager.

En el procedimiento siguiente se describe cómo deshabilitar TCP en el servidor.

Para deshabilitar TCP en el servidor

  1. Establezca el valor del Registro DisableRPCOverTCP en 1.
  2. Reinicie el servidor.

En el procedimiento siguiente se describe cómo deshabilitar RPC/TCP y RPC/NP en el servidor (por ejemplo, para reducir la superficie expuesta a ataques).

Deshabilitar RPC/TCP y RPC/NP en el servidor

  1. Establezca el DisableRemoteScmEndpoints valor del Registro en 1.
  2. Reinicie el servidor.

El SCMApiConnectionParam valor del Registro también se puede usar para especificar el intervalo de tiempo de espera rpc/TCP, en milisegundos. Por ejemplo, un valor de 30 000 especifica un intervalo de tiempo de espera de 30 segundos. El valor predeterminado es 21 000 (21 segundos).