Performing an Inventory of ActiveX Controls in Windows 7

Applies To: Windows 7

Many organizations install ActiveX controls on their desktop computers to help ensure that the applications and business processes that they use work properly. Many of these same organizations want their users to run as standard users, which are non-administrative users that are members of the Users group, and these organizations must understand how this affects ActiveX installation and mitigate any compatibility concerns.

Most ActiveX controls deployed through a Web site require administrator privileges to install. In addition, many of these ActiveX controls must be regularly updated, which can make the deployment process of ActiveX controls more difficult and costly. With Windows Vista and Windows 7, you can now easily deploy and update ActiveX controls in a standard user environment by using the ActiveX Installer Service.

This topic demonstrates how to determine which ActiveX controls are installed on a computer.

Performing an inventory of ActiveX controls

You can use either the registry or Microsoft System Center Configuration Manager 2007 to perform an inventory of ActiveX controls. The following sections provide more information about these two options.

Using System Center Configuration Manager to perform an inventory of ActiveX controls

The most effective way to perform an inventory of the registry state for the ActiveX controls is to extend the hardware inventory feature of Microsoft System Center Configuration Manager 2007, which includes:

  1. Extending the default Managed Object Format (MOF) files to add a class to report on Internet Component Download Service-based installation. For information about editing MOF files, see SMS: How to Edit MOF Files with MOF Manager (https://go.microsoft.com/fwlink/?LinkId=163606).

  2. Adding a script to acquire the registry state on the client computer.

The following sample script demonstrates using the MicrosoftIE_Object WMI class to gather information about which ActiveX controls are installed on a computer running Windows XP.

Note

MicrosoftIE_Object is not installed on Windows Vista or Windows 7.

strComputer = "."
set ofso = CreateObject("Scripting.FileSystemObject")
Set oNetwork = CreateObject("Wscript.Network")

set ofile = oFSO.CreateTextFile(oNetwork.ComputerName & ".txt", True, False)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & _
    "\root\cimv2\Applications\MicrosoftIE")

Set colIESettings = objWMIService.ExecQuery _
    ("Select * from MicrosoftIE_Object")

For Each strIESetting in colIESettings
                oFile.Writeline oNetwork.ComputerName & "," & strIESetting.CodeBase & "," & strIESetting.ProgramFile & "," &strIESetting.Status

'    Wscript.Echo "Code base: " & strIESetting.CodeBase
'    Wscript.Echo "Program file: " & strIESetting.ProgramFile
'    Wscript.Echo "Status: " & strIESetting.Status
'    Wscript.Echo

Next
oFile.Close

Using the registry to perform an inventory of ActiveX controls

The information in \HKLM\Software\Microsoft\Code Store Database\Distribution Units can help you understand where an ActiveX control was installed from and what files were added during the installation.

The following is an overview of the state found in the Distribution Units registry key, with registry keys in bold.

The following is an example of the state added to the registry when the Microsoft Update ActiveX control is installed.

Determining ActiveX controls usage

After performing an inventory of the ActiveX controls in the environment, there are a number of ways to determine which ActiveX controls are still being used in your environment. The most common way is to review ActiveX controls that are listed in the registry in \HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ModuleUsage. To access the registry, click Start, type regedit in the Search programs and files box, and then press ENTER.