Dienste und RPC/TCP
Ab Windows Vista unterstützt der Dienststeuerungs-Manager (Service Control Manager, SCM) Remoteprozeduraufrufe sowohl über das Transmission Control Protocol (RPC/TCP) als auch über benannte Rohre (RPC/NP). Clientseitige SCM-Funktionen verwenden standardmäßig RPC/TCP.
RPC/TCP eignet sich für die meisten Anwendungen, die remote SCM-Funktionen verwenden, z. B. Remoteverwaltung oder Überwachungstools. Aus Gründen der Kompatibilität und Leistung müssen einige Anwendungen rpc/TCP jedoch möglicherweise deaktivieren, indem sie die in diesem Thema beschriebenen Registrierungswerte festlegen.
Wenn ein Dienst eine Remote-SCM-Funktion aufruft, versucht der clientseitige SCM zunächst, RPC/TCP für die Kommunikation mit dem serverseitigen SCM zu verwenden. Wenn auf dem Server eine Version von Windows ausgeführt wird, die RPC/TCP unterstützt und RPC/TCP-Datenverkehr zulässt, wird die RPC/TCPP-Verbindung erfolgreich hergestellt. Wenn auf dem Server eine Version von Windows ausgeführt wird, die RPC/TCP nicht unterstützt oder RPC/TCP unterstützt, aber hinter einer Firewall arbeitet, die nur benannten Pipedatenverkehr zulässt, wird die RPC/TCP-Verbindung unterbrochen, und die SCM wiederholt die Verbindung mit RPC/NP. Dies wird schließlich erfolgreich sein, kann aber einige Zeit dauern (in der Regel mehr als 20 Sekunden), wodurch die OpenSCManager- funktion blockiert angezeigt wird.
TCP enthält keine Benutzeranmeldeinformationen, die mit einem net angegeben sind, Befehl verwenden. Wenn RPC/TCP aktiviert ist und sc.exe verwendet wird, um auf den angegebenen Dienst zuzugreifen, kann der Befehl mit "Zugriff verweigert" fehlschlagen. Wenn RPC/TCP auf clientseitiger Seite deaktiviert wird, verwendet der Befehl sc.exe eine benannte Pipe, die Benutzeranmeldeinformationen enthält, sodass der Befehl erfolgreich ausgeführt wird. Informationen zu sc.exefinden Sie unter Steuern eines Diensts mithilfe von SC.
Anmerkung
Ein Dienst sollte keine expliziten Anmeldeinformationen für einen Net use-Befehl bereitstellen, da diese Anmeldeinformationen möglicherweise versehentlich außerhalb der Dienstgrenzen freigegeben werden. Stattdessen sollte der Dienst Clientidentitätswechsel zum Identitätswechsel des Benutzers verwenden.
RPC/TCP-Registrierungswerte
RPC/TCP wird durch die SCMApiConnectionParam-, DisableRPCOverTCP-und DisableRemoteScmEndpoints Registrierungswerte gesteuert, die alle unter dem HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control Schlüssel befinden. Alle diese Werte weisen einen REG_DWORD Datentyp auf. Die folgenden Verfahren zeigen, wie Sie diese Registrierungswerte zum Steuern von RPC/TCP verwenden.
Das folgende Verfahren beschreibt, wie RPC/TCP auf clientseitiger Seite deaktiviert wird.
So deaktivieren Sie RPC/TCP auf clientseitiger
- Kombinieren Sie den SCMApiConnectionParam Registrierungswert mit dem Maskenwert 0x80000000.
- Starten Sie die Anwendung neu, die die OpenSCManager--Funktion aufruft.
Das folgende Verfahren beschreibt, wie TCP auf serverseitiger Seite deaktiviert wird.
So deaktivieren Sie TCP auf der Serverseite
- Legen Sie den Registrierungswert DisableRPCOverTCP auf 1 fest.
- Starten Sie den Server neu.
Im folgenden Verfahren wird beschrieben, wie Sowohl RPC/TCP als auch RPC/NP auf dem Server deaktiviert werden (z. B. um die Angriffsfläche zu reduzieren).
So deaktivieren Sie sowohl RPC/TCP als auch RPC/NP auf dem Server
- Legen Sie die DisableRemoteScmEndpoints Registrierungswert auf 1 fest.
- Starten Sie den Server neu.
Der SCMApiConnectionParam- Registrierungswert kann auch verwendet werden, um das RPC/TCP-Timeoutintervall in Millisekunden anzugeben. Beispielsweise gibt ein Wert von 30.000 ein Timeoutintervall von 30 Sekunden an. Der Standardwert ist 21.000 (21 Sekunden).