Hello,
a customer had the problem that he couldn’t install the Windows Vista Service Pack 2 on his Laptop. Service Pack 1 seems to be installed, but the Service Pack 2 Setup says it isn’t.
I processed a query by using the WMI Command line tool and filtered for Service pack 1 (Hotfixnumber KB936330).
wmic qfe|findstr /I 936330
But in the list of installed hotfixes KB936330 is not listed. WinVer.exe reports a Vista with Service Pack 1 installed.
I was confused. Maybe Service Pack 1 wasn’t installed properly. I started the Service Pack 1 installation again but Microsoft do not provide any command line option for repairing a corrupt or incomplete service pack installation. Setup simply says that Service pack 1 is already installed. Also a deinstallation is impossible because the Hotfix is not listed in the installed update list.
I had to determine on which basis the service pack 2 installer recognize an installed service pack 1.
I started Microsofts ProcessMonitor and traced what happen when the Service Pack 2 Setup starts to see which values were requested. A simple filter set to 936330 lists 2 suspicious registry keys:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\KB936330~31bf3856ad364e35~x86~~6.0.1.18000]
"CurrentState"=dword:00000004
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\KB936330~31bf3856ad364e35~x86~en-US~6.0.1.18000]
"CurrentState"=dword:00000004
In both keys there is the value “CurrentState” which is set to 4. I took a look on other Packages and their CurrentState is 7.
Trying to change he values returned access denied. So I had to take over the ownership of both keys and subcontainers and grant full control permissions to me.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\KB936330~31bf3856ad364e35~x86~~6.0.1.18000]
"CurrentState"=dword:00000007
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\KB936330~31bf3856ad364e35~x86~en-US~6.0.1.18000]
"CurrentState"=dword:00000007
I changed both values to 7 and started the setup again. Now Service pack 1 was recognized as installed and service pack 2 was applied successfully:-)
Michael