RPC的 全稱 是Remote Procedure Call,即遠程過程調用協議,它基于client-server通訊模型,但客戶機與服務器并非一定是不同機器,RPC常常應用于同一機器不同進程之間的通訊。RPC協議將發出請求的所有進程視為“client”,將接收請求的進程都定義為“server”,在網絡遠程訪問外設如打印機掃描儀等時RPC扮演了重要角色。
在Windows分布共享數據的有關進程中,經常會用到RPC技術。在系統大量的工作中,如果隨意改變設置或者設置有不妥之處,就會遇到“RPC server unavailable”之類的出錯信息。那么具體癥狀有哪些呢?
一種是由于取消了系統的“文件打印共享”所致。由于RPC 協議的作用之一就是支持用戶調用網絡連接的外設,取消共享便會導致用戶無法實現打印任務,只會看到RPC的錯誤提示。另外,網絡連接有問題也會顯示RPC錯誤,當客戶端發出請求而網絡連接有問題時,客戶端對服務器的請求也會收到錯誤提示“RPC server unavailable”。
還有就是在名稱解析有問題時也會發生類似錯誤,比如當客戶端向服務器發出請求時采用的可能是服務器的名稱,或者IP地址或者端口號,假如RPC服務器的名稱映射到了錯誤的IP地址,那么客戶端就與服務器失聯,從而發生RPC錯誤。

圖1 在“控制面板”中對防火墻設置RPC服務
防火墻之類的安全工具經常會攔截通過TCP端口發來的請求,也會導致RPCs出錯提示。RPC還需要在Windows注冊表內有相關的設置值,注冊表損壞也會導致 RPC服務失效。
首先應該檢查防火墻,無論是Windows系統自身的防火墻,還是其他安全防御軟件都有可能阻止RPC請求。假如用戶安裝的是第三方防火墻,可將其配置為允許RPCs出入。假如我們不想改變防火墻設置,那么在允許的情況下暫時關閉防火墻,當完成RPC相關任務后再將其打開。
對于默認的Windows系統本身的防火墻,讓其支持RPC的具體設置方式為:打開Windows系統中的控制面板,點擊“系統和安全”,然后點擊“Windows防火墻”下的“允許應用或功能通過Windows防火墻”(如圖1),在應用列表窗口中勾 選“Remote Assistance Services”即可。
有時是因為網絡連接設置有問題導致RPC失效,尤其當錯誤發生在客戶端對服務器請求的情況下,此時不妨Ping一下。具體操作方式為:在“運行”窗口輸入將要運行的命令“ncpa.cpl” ,選擇“本地連接”后選擇“屬性”,在菜單列表中確認是否列出了“Internet 協議” 以及“文件和打印機網絡共享”,如果沒有則需要進行重新安裝 。
而且,支持RPC的多項服務需要在客戶端和服務器的后臺運行,這些服務進程通過運行命令“services.msc”可以進行查看,假如其中RPC服務沒有啟用,那么雙擊之后在屬性窗口內選擇啟動甚至自動啟動。而在注冊表內,假如由于故障損壞導致“RpcSs”注冊值丟失也會引起RPC異常。假如用戶對注冊表之類比較棘手,可以借助第三方專用工具如SpeedyPC和Reimage等,它們不僅可以修復注冊表,也能解決RPC錯誤。