I have spent a serious amount of time researching how to
fix Google Chrome’s “Class not registered” error.
Many responses move toward deleting the registry keys
Or the same path under HKCR. With my testing in our Corp environment, I
found the HKLM did not exist. On some Win8 machines deleting the HKCR did not
fix our problem. Not sure of the reason,
some machines deleting the HKCR fixed it.
Maybe that machine only had one user on it. I don’t get the opportunity to talk to most
users about their computer problems.
Other “FIXED” meant creating a shortcut right from the
chrome.exe file, but pinning that to the user task bar meant it broke
again. This solution doesn’t work in the
Corp environment either.
Other “FIXED” have said just run it as Admin. Two points, one it won’t fly in a Corp
environment where the users are just users, and two, the people who worked out
to run it as admin might have ran regedit as admin and hit the HKCR keys, so
they fixed it for only admin.
From the information I have read, the HKCR is a concatenation
of the HKLM and HKCU and so this can be different to each user logging in to
that computer. Fixing the Classes Root
for one person won’t for another.
I did a bit of deeper investigation into shortcuts and
worked out each user under HKEY_USERS\S-1-5-21-[SID] has their own shortcut and
The fix for the "Class not registered" error is to fix it
for each existing user.
EDIT: I managed to get the time to write the script up for fixing Chrome
Const HKU = &H80000003
Dim strValue,oReg, Value, subValue, wmi, wshshell, strFullPath
Dim Key1, key2, key3
Set wmi = GetObject("winmgmts:\\.\root\cimv2")
Set WshShell = WScript.CreateObject("WScript.Shell")
Set subValue = wmi.ExecQuery("Select SID from Win32_UserProfile where SID like 'S-1-5-21%'")
strValueName1 = "DelegateExecute"
Key1 = "\Software\Classes\Chrome\.exe\shell\open\command"
Key2 = "\Software\Classes\Chrome\.exe\shell\opennewwindow\command\"
Key3 = "\Software\Classes\ChromeHTML\shell\open\command\"
For Each Value In subValue
oReg.GetStringValue HKU,Value.SID & key,strValueName,strValue
If strValue <> "" Then
Wscript.Echo HKU & Value.SID & key & strValueName
oreg.deletevalue HKU, Value.SID & key,strValueName