What's a Remote Procedure Call (RPC)?
A little background... RPC is an acronym for Remote Procedure Call, and typically is used to allow a program running on one computer to access services on another networked computer. I say "typically" because Microsoft added some of it's own extensions to the standard RPC protocol and deeply intertwined RPC into the inter-process communication of Windows operating system components. So if RPC stops working, lots of other Windows features will fail as well.
In this case, I didn't know if the "RPC Server Unavailable" problem was caused by the malware we had removed, by one of the anti-virus or anti-spyware tools, or something else. No matter, it was broken and my friend wanted me to fix it. I did a bit of poking around on the Web, and found lots of information on RPC. There are some viruses and spyware that try to exploit an RPC server software bug, but we had already applied the fix for that. Another article said that if the RPC server is not running, one can go to Control Panel / Performance and Maintenance / Administrative Tools / Services then double click on the Remote Procedure Call entry and either start the server, or set it to start automatically on system startup.
I tried that, but the Remote Procedure Call entry did not appear in the Services list. There was an entry for Remote Procedure Call Locator, but that's a different service, not related to this problem. When I looked on another computer that was working properly, the RPC entry did show up in the Services list. So I clicked on Properties and learned that the name Windows assigned to this service was RPCSS. This bit of information proved to be an important clue that helped me solve the "RPC Server Unavailable" problem.
Blame the Registry
I figured that since RPC was missing from the Services list, it probably had something to do with the Windows Registry. The Windows Registry is a hideously complex ball of string, rubber bands, duct tape and bailing wire that's supposed to keep track of Windows system settings, your hardware configuration, user preferences, file associations, system policies, and installed software. It was supposed to be an improvement on the collection of simple text-based INI files that stored Windows configuration settings, but too many pocket protectors got involved in the design and the result was an over-engineered, over-complicated mess that makes Windows much more fragile and harder for users to maintain. I've seen so many cases where the Windows Registry got mucked up by malware or a system crash, that I decided to blame the Registry and ask questions later.
Since I had one working machine and one broken machine, I thought that I might find the problem by comparing Registry entries on the two systems, looking for missing or incorrect keys related to the RPC Server. But where to start? I did find a Microsoft KnowledgeBase article that mentioned a Registry key called HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc, but that key looked fine on the problem machine when I examined it with REGEDIT.
Hack the Registry
So I poked around on my own machine until I found HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcSs (remember RPCSS from above?) and noted that this Registry key was missing from the problem machine. I knew from years of thrashing around in the Registry that both HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run and HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services have something to do with the applications and services that are automatically run at system startup time, so this seemed promising.
I exported the RpcSs key from my Registry (using REGEDIT's File/Export feature) and imported it to the other machine (with REGEDIT's File/Import), thinking there was NO way this would solve the problem, but it was worth a shot in the dark. Wonder of wonders, I rebooted and everything was back to normal. The RPC Server showed up in the Services list just like I had hoped, and it was running!
I should add the caveat that mucking about in your Windows Registry can be dangerous, if you're not careful about what you add, delete or modify. So make a backup of your Registry before you do so. The easiest way to backup your Registry is to create a Restore Point using System Restore. See my article on Using System Restore for more help with that.
Got comments on this article? Post them below...