共用方式為


服務和 RPC/TCP

從 Windows Vista 開始,服務控制管理員 (SCM) 支援透過傳輸控制通訊協定 (RPC/TCP) 和命名管道 (RPC/NP) 的遠端過程調用。 用戶端 SCM 函式預設會使用 RPC/TCP。

RPC/TCP 適用於大部分遠端使用 SCM 功能的應用程式,例如遠端管理或監視工具。 不過,為了相容性和效能,某些應用程式可能需要藉由設定本主題中所述的登錄值來停用 RPC/TCP。

當服務呼叫遠端 SCM 函式時,用戶端 SCM 會先嘗試使用 RPC/TCP 與伺服器端 SCM 通訊。 如果伺服器執行的是支援 RPC/TCP 且允許 RPC/TCP 流量的 Windows 版本,RPC/TCP 連線將會成功。 如果伺服器執行的是不支援 RPC/TCP 的 Windows 版本,或支援 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 是由 SCMApiConnectionParamDisableRPCOverTCPDisableRemoteScmEndpoints 登錄值所控制,這些值全都在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control 機碼下。 所有這些值都有REG_DWORD數據類型。 下列程式示範如何使用這些登錄值來控制 RPC/TCP。

下列程序說明如何在用戶端停用 RPC/TCP。

在用戶端停用 RPC/TCP

  1. SCMApiConnectionParam 登錄值與遮罩值結合0x80000000。
  2. 重新啟動呼叫 OpenSCManager 函式的應用程式。

下列程序說明如何在伺服器端停用 TCP。

在伺服器端停用 TCP

  1. DisableRPCOverTCP 登錄值設定為 1。
  2. 重新啟動伺服器。

下列程式描述如何在伺服器上停用 RPC/TCP 和 RPC/NP(例如,減少受攻擊面)。

若要停用伺服器上的 RPC/TCP 和 RPC/NP

  1. DisableRemoteScmEndpoints 登錄值設定為 1。
  2. 重新啟動伺服器。

SCMApiConnectionParam 登錄值也可用來指定 RPC/TCP 超時時間間隔,以毫秒為單位。 例如,值為 30,000 會指定 30 秒的超時時間間隔。 默認值為 21,000 (21 秒)。