Servizi e RPC/TCP

A partire da Windows Vista, gestione controllo del servizio (SCM) supporta chiamate di routine remote su RPC/TCP (Transmission Control Protocol) e named pipe (RPC/NP). Per impostazione predefinita, le funzioni SCM lato client usano RPC/TCP.

RPC/TCP è appropriato per la maggior parte delle applicazioni che usano funzioni SCM in modalità remota, ad esempio strumenti di amministrazione remota o monitoraggio. Tuttavia, per compatibilità e prestazioni, alcune applicazioni potrebbero dover disabilitare RPC/TCP impostando i valori del Registro di sistema descritti in questo argomento.

Quando un servizio chiama una funzione SCM remota, SCM lato client tenta prima di tutto di usare RPC/TCP per comunicare con SCM lato server. Se il server esegue una versione di Windows che supporta RPC/TCP e consente il traffico RPC/TCP, la connessione RPC/TCPP avrà esito positivo. Se il server esegue una versione di Windows che non supporta RPC/TCP o supporta RPC/TCP, ma funziona dietro un firewall che consente solo il traffico named pipe, il timeout della connessione RPC/TCP e SCM ritenta la connessione con RPC/NP. L'operazione avrà esito positivo, ma può richiedere tempo (in genere più di 20 secondi), causando la visualizzazione bloccata della funzione OpenSCManager .

TCP non contiene le credenziali utente specificate con un comando net use . Pertanto, se RPC/TCP è abilitato e sc.exe viene usato per tentare di accedere al servizio specificato, il comando potrebbe non riuscire con accesso negato. La disabilitazione di RPC/TCP sul lato client fa sì che il comando sc.exe usi una named pipe che contiene le credenziali utente, in modo che il comando abbia esito positivo. Per informazioni su sc.exe, vedere Controllo di un servizio tramite SC.

Nota

Un servizio non deve fornire credenziali esplicite a un comando net use , perché tali credenziali potrebbero essere inavvertitamente condivise al di fuori dei limiti del servizio. Al contrario, il servizio deve usare la rappresentazione client per rappresentare l'utente.

 

Valori del Registro di sistema RPC/TCP

RPC/TCP è controllato dai valori del Registro di sistema SCMApiConnectionParam, DisableRPCOverTCP e DisableRemoteScmEndpoints, tutti inclusi nella chiave di controllo SYSTEM\CurrentControlSet\ HKEY_LOCAL_MACHINE\. Tutti questi valori hanno un tipo di dati REG_DWORD. Le procedure seguenti illustrano come usare questi valori del Registro di sistema per controllare RPC/TCP.

La procedura seguente descrive come disabilitare RPC/TCP sul lato client.

Per disabilitare RPC/TCP sul lato client

  1. Combinare il valore del Registro di sistema SCMApiConnectionParam con il valore mask 0x80000000.
  2. Riavviare l'applicazione che chiama la funzione OpenSCManager .

La procedura seguente descrive come disabilitare TCP sul lato server.

Per disabilitare TCP sul lato server

  1. Impostare il valore del Registro di sistema DisableRPCOverTCP su 1.
  2. Riavviare il server.

La procedura seguente descrive come disabilitare sia RPC/TCP che RPC/NP nel server (ad esempio, per ridurre la superficie di attacco).

Per disabilitare sia RPC/TCP che RPC/NP nel server

  1. Impostare il valore del Registro di sistema DisableRemoteScmEndpoints su 1.
  2. Riavviare il server.

Il valore del Registro di sistema SCMApiConnectionParam può essere usato anche per specificare l'intervallo di timeout RPC/TCP, espresso in millisecondi. Ad esempio, un valore pari a 30.000 specifica un intervallo di timeout di 30 secondi. Il valore predefinito è 21.000 (21 secondi).