Hi guys,
I just installed a clean and new W2K8 R2 server and one of the first errors i got after installing a couple (43) Windows patches was this one:
On certain Windows Server 2008 R2 machines you may experience the Server Manager being unable to open Roles and/or Features in the MMC. The error it usually comes back with is Unexpected error refreshing Server Manager: The remote procedure call failed. (Exception from HRESULT: 0x800706BE).
If your Server Manager is crashing and you’re unable to add Roles or Features this article will talk you through a number of steps which may help you resolve the issue.
Step 1 – Download & Install System Update Readiness Tool (KB947821)
The first step in trying to diagnose this is to download and install KB947821 on the server which is having the problem with System Manager and generating the 0x800706BE refresh error. You can download it from http://support.microsoft.com/kb/947821
The System Update Readiness Tool, runs a onetime scan for inconsistencies that might prevent future servicing operations. This scan typically takes less than 15 minutes to run. However, the tool might take significantly longer on some computers. The Windows Update progress bar is not updated during the scan, and progress seems to stop at 60% complete for some time. This behavior is expected. The scan is still running and you should not cancel the update. If you are prompted to restart your computer, do so.
Step 2 – Analyze KB947821 output log file
After you install KB947821 on your computer, you need to inspect the output log file it left behind. You can find the file in: C:WindowsLogsCBSCheckSUR.log
The log should show what files have been detected as corrupt or missing from/in the C:windowsservicingpackages folder. For instance, on our test machine they were shown as:
2010-10-07 09:30:43, Info CBS Failed to get session package state for package: Package_3_for_KB975467~31bf3856ad364e35~amd64~~6.1.1.0 [HRESULT = 0x80070490 - ERROR_NOT_FOUND] 2010-10-07 09:30:43, Info CBS Failed to get session package state for package: Package_2_for_KB975467~31bf3856ad364e35~amd64~~6.1.1.0 [HRESULT = 0x80070490 - ERROR_NOT_FOUND]
You might also want to have a look at the CheckSUR.persist.log. In our case it looked like this:
================================= Checking System Update Readiness. Binary Version 6.1.7600.20593 Package Version 7.0 2010-04-14 09:56 Checking Windows Servicing Packages Checking Package Manifests and Catalogs (f) CBS MUM Corrupt 0x00000000 servicingPackagesPackage_for_KB976264_RTM~31bf3856ad364e35~amd64~~6.1.2.0.mum Expected file name Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~6.1.7600.16385.mum does not match the actual file name Checking Package Watchlist Checking Component Watchlist Checking Packages Checking Component Store Summary: Seconds executed: 72 Found 1 errors CBS MUM Corrupt Total count: 1 Unavailable repair files: servicingpackagesPackage_for_KB976264_RTM~31bf3856ad364e35~amd64~~6.1.2.0.mum servicingpackagesPackage_for_KB976264_RTM~31bf3856ad364e35~amd64~~6.1.2.0.cat (w) Unable to get system disk properties 0x0000045D IOCTL_STORAGE_QUERY_PROPERTY Disk Cache
We also checked the servermanager.log and found that the CbsUpdateState.bin file in the C:Windowssystem32ServerManagerCache folder is missing.
4652: 2010-10-14 17:43:53.856 [Provider] C:Windowssystem32ServerManagerCacheCbsUpdateState.bin does not exist. 4652: 2010-10-14 17:43:53.965 [CBS] IsCacheStillGood: False. 4652: 2010-10-14 17:44:13.356 [CBS] Error (Id=0) Function: 'CreateSessionAndPackage()->Session_OpenPackage' failed: 800706be (-2147023170) 4652: 2010-10-14 17:44:13.419 [ExceptionHandler] Error (Id=0) An unexpected exception was found: System.Runtime.InteropServices.COMException (0x800706BE): The remote procedure call failed. (Exception from HRESULT: 0x800706BE) at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo) at Microsoft.Windows.ServerManager.ComponentInstaller.CreateSessionAndPackage(IntPtr& session, IntPtr& package) at Microsoft.Windows.ServerManager.ComponentInstaller.InitializeUpdateInfo() at Microsoft.Windows.ServerManager.ComponentInstaller.Initialize() at Microsoft.Windows.ServerManager.Common.Provider.RefreshDiscovery() at Microsoft.Windows.ServerManager.LocalResult.PerformDiscovery() at Microsoft.Windows.ServerManager.ServerManagerModel.CreateLocalResult(RefreshType refreshType) at Microsoft.Windows.ServerManager.ServerManagerModel.InternalRefreshModelResult(Object state)
Step 3 – Copy missing or corrupt files
In order to perform this step, you’ll need access to a machine which has a working Server Manager. Copy the files listed as corrupted/missing from C:windowsservicingpackages on the working machine to the server which is exhibiting the HRESULT 0x800706BE error. You may need to change the ownership of the files on the destination machine to your user account as well as give yourself write permissions on the files before Windows allows you to overwrite them.
You can take ownership manually or you can use this script.
Once done, start Server Manager and see if that fixes the error. To be doubly sure, check the contents of the C:Windowssystem32ServerManagerCache folder – there should be two files there: CbsUpdateInfo.bin and CbsUpdateState.bin. If these files still don’t exist after Server Manager starts you haven’t completely fixed the 0x800706BE error.
Step 4 – Copy all files in C:windowsservicingpackages folder
If you’re still unable to get Server Manager started, it means that there may be other problems and we need to overwrite all the packages in the C:windowsservicingpackages folder. The first step we need to do is take ownership of all the files. To do this, launch a Command Prompt as an Administrator, and I mean right click the Command Prompt icon and select Run As Administrator. At the command prompt execute:
takeown /F c:WindowsServicingPackages /D y /R
The takeown command will give you ownership of the files, but you still need to give yourself write access to the files in order to change them. In the same command prompt window execute the following command: (replace username with your username)
cacls c:WindowsServicingPackages /E /T /C /G "username":F
Now copy all the files from the C:windowsservicingpackages folder on a working server. Make sure that the source server has been patched to the same level and has the same roles/features installed as the destination server.
Step 5 – Start Server Manager and check Cache folder
Try starting Server Manager and check if you’re still getting the error. In all our tests, the above steps have been able to resolve 99% of all Server Manger problems related to error 0x800706BE and 1601. Jus to be on the safe side, check the contents of the C:Windowssystem32ServerManagerCache folder and see that the two .bin files are now visible.
Conclusion
This article has demonstrated a quick and easy way to solve the errors associated with Server Manager and the 0x800706BE and 1601 errors that it exhibits when trying to install Roles or Features. If the problem is not resolved by applying Microsoft KB947821, we have shown a reliable way to fix the 0x800706BE and 1601 errors by copying all files in C:windowsservicingpackages from anther working Windows Server 2008 R2 server.
References
System Update Readiness Tool (KB947821)
http://support.microsoft.com/kb/947821
Advanced guidelines for diagnosing and fixing servicing corruption
http://technet.microsoft.com/en-us/library/ee619779%28WS.10%29.aspx