Licensing and Distribution

Beginning with Microsoft Internet Explorer 4.0, application developers who want to redistribute Windows Internet Explorer technologies—such as the WebBrowser Control, Wininet.dll, Urlmon.dll, or Comctl32.dll (or Common Controls DLL)—must obtain a royalty-free redistribution license for Internet Explorer and download a copy of the Internet Explorer Administration Kit (IEAK) through the IEAK Web Site.

  • Determining the Installed Version of Internet Explorer
    • Determining the Internet Explorer Version from the Registry
    • Determining the Internet Explorer Version from Shdocvw.dll
  • Downloading a Version of Internet Explorer for Redistribution
  • Adding an Application to the Warning List When Uninstalling Internet Explorer
  • Related topics

Determining the Installed Version of Internet Explorer

If your application requires Internet Explorer services, you must determine the version of Internet Explorer installed on the local system before installing your application. There are two methods that can be used to determine the installed version of Internet Explorer. The first obtains the version information from the registry, and the second obtains the version information from one of the Internet Explorer components.

Determining the Internet Explorer Version from the Registry

To obtain the installed Internet Explorer version from the registry, open the following registry key:

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Internet Explorer

In this key, the Version string value contains the Internet Explorer version in the following format:

"<major version>.<minor version>.<build number>.<sub-build number>"

Additionally, the Build value contains a five-character entry in the following format:

"<major version><build number>"

The following are the versions of Internet Explorer and the Version and Build values they return.

Internet Explorer Version Version Value Build Value
Prior to 4.0 N/A N/A
4.0 4.71.1712.6 41712
4.01 4.72.2106.8 42016
4.01 SP1 4.72.3110.3 43110
5 5.00.2014.0216 52016
5.5 5.50.4134.0100 54134
6.0 RTM 6.0.2600.0000 62600
6.0 Service Pack 2 (SP2) 6.0.2900.2180 62900.2180
6.0 (Windows Server 2003 SP2) 6.0.3790.3959 63790
7 (Windows XP) 7.0.5730.11 75730
7 (Windows Vista) 7.0.6000.16448 76000

 

Determining the Internet Explorer Version from Shdocvw.dll

Because the Internet Explorer browser is implemented in Shdocvw.dll, the version of this DLL can be used to determine which version of Internet Explorer is installed. The absence of this file in the system indicates that Internet Explorer is either not installed or not installed properly.

The following are the versions of Internet Explorer and their corresponding versions of Shdocvw.dll.

Internet Explorer Version Shdocvw.dll Version
1.0 (Plus!) 4.40.308
2.0 4.40.520
3.0 4.70.1155
3.0 (OSR2) 4.70.1158
3.01 4.70.1215
3.02 4.70.1300
4.0 4.71.1712.6
4.01 4.72.2106.8
4.01 SP1 4.72.3110.3
5 5.00.2014.0216
5.5 5.50.4134.100
6.0 6.00.2600.0000
7 (Windows XP) 6.0.2900.3020
7 (Windows Vista) 6.0.6000.16386

 

The following function retrieves the version and build numbers of the Shdocvw.dll currently installed on the local system.

#include <windows.h>
#include <shlwapi.h>

HRESULT GetLibraryVersion(LPDWORD pdwMajor, LPDWORD pdwMinor, LPDWORD pdwBuild)
{
    if(IsBadWritePtr(pdwMajor, sizeof(DWORD)) ||
       IsBadWritePtr(pdwMinor, sizeof(DWORD)) ||
       IsBadWritePtr(pdwBuild, sizeof(DWORD)))
           return E_POINTER;

    HRESULT hr = S_OK;
    
    *pdwMajor = 0;
    *pdwMinor = 0;
    *pdwBuild = 0;

    // Load the DLL.
    HINSTANCE hBrowser = LoadLibrary(TEXT("shdocvw.dll"));
    
    if(hBrowser)
    {
        DLLGETVERSIONPROC pDllGetVersion;

        // You must get this function explicitly.
        pDllGetVersion = (DLLGETVERSIONPROC)GetProcAddress(hBrowser, TEXT("DllGetVersion"));

        if(pDllGetVersion)
        {
            DLLVERSIONINFO dvi;
            ZeroMemory(&dvi, sizeof(dvi));
            dvi.cbSize = sizeof(dvi);
            
            hr = (*pDllGetVersion)(&dvi);

            if(SUCCEEDED(hr))
            {
                *pdwMajor = dvi.dwMajorVersion;
                *pdwMinor = dvi.dwMinorVersion;
                *pdwBuild = dvi.dwBuildNumber;
            }
        }
        else
        {
            // If GetProcAddress failed, there is a problem with the DLL.
            hr = E_FAIL;
        }

        FreeLibrary(hBrowser);
    }
    else
    {
       // Error loading module -- fail as securely as possible
       hr = E_FAIL;
    }
    
    return hr;
}

Security Warning: Using LoadLibrary incorrectly can compromise the security of your application by loading the wrong DLL. Refer to the LoadLibrary documentation for information on how to correctly load DLLs with different versions of Windows.

Downloading a Version of Internet Explorer for Redistribution

The IEAK enables the application developer to have complete control over the redistribution of Internet Explorer. In some cases, however, the minimal installation package may be sufficient for an application's needs.

To download a minimal installation of Internet Explorer for redistribution, perform the following steps:

  1. Run IE6Setup.exe and select Install Minimal or Customize Your Browser.
  2. Click Advanced, select Download Only to download just the minimal components to your system, and click OK to exit the dialog box.
  3. Click Next.
  4. Specify the location where the files should be downloaded. Otherwise, the files will be downloaded to the Windows Update Setup Files folder.
  5. Select a platform for installation, either Windows 98, Microsoft Windows NT, or Windows 2000.

The files are then downloaded to the local computer in the directory specified in step 4.

The following command line will install the Microsoft Internet Explorer 6 minimal installation package in quiet mode, suppressing prompts as files are extracted.

ie6setup.exe /Q /M:0

For more information about other installation options, refer to the documentation provided with the IEAK.

Note  When installing Internet Explorer in a Windows NT environment, make sure that the setup application has proper administration rights and that there is enough available space on the hard disk for the installation. The minimal installation package requires approximately 60 MB of available space to accommodate the temporary and installed files.

 

Adding an Application to the Warning List When Uninstalling Internet Explorer

Internet Explorer Setup uses a registry key to identify applications in the system that require Internet Explorer. Any attempt to uninstall Internet Explorer causes a warning dialog box to appear, enumerating the applications that may not function correctly once Internet Explorer is removed from the user's machine. The registry key and value format that allows the application developer to indicate the version of Internet Explorer it requires.

If your application requires Internet Explorer, be sure to add a string value under the following registry key; conversely, when your application is uninstalled, remember to remove the value from the registry.

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Internet Explorer
            DependentComponents
               AppName = sIEVersion

For example, the following registry entries indicate the Internet Explorer versions required by Microsoft Visual Studio 6 and Microsoft Office 2000.

Visual Studio 6.0 = "4.71"
Office 2000 = "5.0"

When Internet Explorer is uninstalled, users are warned with the list of applications on the system that require Internet Explorer, and they are asked if they want to go ahead with the removal of Internet Explorer files.

clientCaps