Servizi e RPC/TCP
A partire da Windows Vista, Gestione controllo servizi supporta le chiamate di routine remota su RPC/TCP (Transmission Control Protocol) e named pipe (RPC/NP). Le funzioni SCM lato client usano RPC/TCP per impostazione predefinita.
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 sul 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. Questa operazione avrà esito positivo, ma può richiedere tempo (in genere più di 20 secondi), causando la visualizzazione della funzioneOpenSCManager.
TCP non contiene 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, quindi il comando avrà 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 condivise inavvertitamente al di fuori dei limiti del servizio. Al contrario, il servizio deve usare rappresentazione client per rappresentare l'utente.
Valori del Registro di sistema RPC/TCP
RPC/TCP è controllato dal SCMApiConnectionParam, DisableRPCOverTCPe DisableRemoteScmEndpoints valori del Registro di sistema, tutti inclusi nella chiave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control. 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
- Combinare il valore del Registro di sistema SCMApiConnectionParam con il valore mask 0x80000000.
- Riavviare l'applicazione che chiama la funzioneOpenSCManager.
La procedura seguente descrive come disabilitare TCP sul lato server.
Per disabilitare TCP sul lato server
- Impostare il valore del Registro di sistema DisableRPCOverTCP su 1.
- 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
- Impostare DisableRemoteScmEndpoints valore del Registro di sistema su 1.
- Riavviare il server.
Il valore SCMApiConnectionParam del Registro di sistema 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).