Hello all,
I would like to apologize for the delayed response on this thread. All the results (logs) that you have all posted in the thread are helpful. Based on the various results, it’s evident that the problem has a common cause.
Here’s a little background on the problem that you are experiencing:
When you use Windows Update to install updates for Windows Vista and Windows 7, the process relies on the Windows Module Installer (trustedinstaller.exe). The TrustedInstaller is the online interface to the servicing stack. To keep things simple, it’s one of the most important components when you install updates. This method also allows Windows to be serviced (to install updates) without the need of an administrator. In fact, when the components of Windows are being updated, it’s the TrustedInstaller that is used to update the operating system files.
Furthermore, when you look at the security settings of certain servicing components of Windows, you would notice that the TrustedInstaller is the only item listed under the User Name and Groups with full permissions. This is only true if the respective folder or registry key is kept at its default state. In other words, changes to these security settings would cause the ACCESS DENIED (0x80070005). It’s difficult to associate a culprit to the unwanted changes. A possible cause that was previously mentioned is malware.
Awhile ago, I asked the community to run a Sysinternal Tool known as Access Check to capture the details of the problem. The output of the tool would list all of the servicing components where the security permissions restricted the TrustedInstaller. As a result, when you try to install updates for Windows, you would obtain the error 0x80070005 – also known as ACCESS DENIED. In summary, it is the TrustedInstaller that has been denied of access to a component that it should have access to.
Here’s an example of the output:
HKLM\software\Microsoft\Windows\CurrentVersion\Component Based Servicing\Retry Agent
HKLM\software\Microsoft\Windows\CurrentVersion\Component Based Servicing\Sqm
HKLM\software\Microsoft\Windows\CurrentVersion\Component Based Servicing\Sqm\VistaSP1-KB936330~31bf3856ad364e35~x86~~6.0.1.18000
HKLM\software\Microsoft\Windows\CurrentVersion\Component Based Servicing\Sqm\VistaSP1-KB936330~31bf3856ad364e35~x86~~6.0.1.18000\InstallCounter
As you can see from the above, there are four registry keys with unexpected security settings.
...The Solution...
To correct the problem, you can try the steps below. Keep in mind that these steps are still experimental. I look forward to your feedback and results. For the long term, we hope that we can create an automated solution for all.
1. Download and install SubInACL from the Microsoft Download Center http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=23510
2. Open Notepad (Click Start, type Notepad, and then press Enter)
3. Copy and paste the following text into Notepad
Set OSBIT=32
IF exist "%ProgramFiles(x86)%" set OSBIT=64
set RUNNINGDIR=%ProgramFiles%
IF %OSBIT% == 64 set RUNNINGDIR=%ProgramFiles(x86)%
subinacl /subkeyreg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing" /grant="nt service\trustedinstaller"=f
4. Close Notepad, and make sure you save it. When you save the text, make sure that you set
Save as Type to “All Files (*.*)”. Very important! The file name needs end with .CMD. For example: fix.cmd. Lastly, when you save the file, make sure you save it at a location where it will be easy for you to find.
5. Right click on the file that you just saved in step #4, and select “Run as Adminstrator”
Thanks and I look forward to your feedback.
Kim