Troubleshooting ActiveX Errors
Before jumping into ActiveX errors, it’s probably a good idea to get a background on what ActiveX is. Microsoft coined the term ActiveX in the late 1990s to describe reusable software components based on their Component Object Model (COM). Originally intended for Visual Basic, Microsoft soon integrated them into Internet Explorer as competition for Java applets (which are essentially the same idea). It’s important to understand that ActiveX is proprietary to Microsoft – no other browser implements ActiveX controls, unlike JavaScript and Java Applets which all major browsers implement.
ActiveX controls developed a bad name for themselves as their integration with Internet Explorer and Internet Explorer’s integration with Windows soon led to adware and spyware infections. Controlling a computer through an ActiveX control is ridiculously simple, and this is a major difference between IE’s ActiveX and Java applets.
Verifying IE Settings
The very first thing to do when troubleshooting ActiveX errors is to make sure ActiveX settings in Internet Explorer are set correctly. In IE, go to Tools… -> Internet Options and select the Security tab. Change the security level for the current zone to Medium and then click the Custom Level button. Verify these options are set as follows:
- Run ActiveX controls and plug-ins – Enabled
- Script ActiveX controls marked safe for scripting - Enabled
- Scripting – Enabled
While you may be tempted to enable everything, be aware that unsigned ActiveX controls are almost always dangerous and you should never allow them to download. Legitimate (and even illegitimate) companies will always sign their ActiveX controls. However that does not mean the ActiveX control is safe.
Proactive Maintenance
There is a saying, “less is more.” This is pretty accurate for software and ActiveX controls are no exception. Thanks mostly to the popularity of Firefox and a plethora of security issues, ActiveX controls are declining as companies try to improve browser compatibility and reduce the number of prompts that users must go through. This means that in many cases you may have an alternative to downloading an ActiveX control as more sites will work without them. The fewer ActiveX controls you have installed, the better things will run.
You can see how many ActiveX controls you have installed by going to Tools… -> Manage Add-ons in IE6 or Tools… -> Manage Add-ons -> Enable or Disable Add-ons in IE7. There are three choices in the drop-down menu that will be useful:
- Add-ons currently loaded in Internet Explorer
- Add-ons that have been used by Internet Explorer
- Add-ons that run without requiring any permissions
Sort each of these by Publisher and check out the ones that aren’t Microsoft or Sun Microsystems or Adobe. You can disable 3rd party add-ons temporarily to see if it helps solve the problem. If you can disable the controls but still use the publisher’s web site it may be advisable to delete the control altogether. If you do need it, you can just install it again and it may fix the problem you were having.
Re-registering DLLs
In the same window, if you look at the File column you’ll notice the file that is the ActiveX control is registered to. The registry information on these DLLs can become corrupted, leading to errors. These errors can sometimes be solved by re-registering the offending DLL, if it was registered in the first place. All the Microsoft-related DLLs should be registered and the following steps should fix the problem:
- Go to Start -> Run…, type in “cmd” without quotes and hit enter.
- In the command window, run regsvr32 file.dll where file.dll is the name of the file in the File column.
- Observe whether the operation succeeded (again, 3rd-party DLLs will probably not work with this method).
Registry Cleanup
If re-registering the DLLs didn’t work or the ActiveX control is a third-party control, it may be time to clean up the registry. This is not something you want to try on your own so it’s best to get something like RegCure to do this for you. RegCure will find invalid ActiveX entries and remove them, so Windows won’t think a control exists when it doesn’t.