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 classes table.
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