Introduction
To date, Microsoft has released a total of six major
versions of the Internet
Explorer browser. But lesser known, is the fact that there
are altogether thirty-six different minor versions of
Internet Explorer out
there in the field. Identifying them programmatically can
be a real headache, and
especially so for the earlier versions.
Firstly, the version numbers used internally by
Microsoft and that as we, the
consumers, know it are a world apart (until version 5.5).
E.g. Internet Explorer
2.0 carries the version number "4.40.520". I was expecting
to see something like
"2.0.xxx". Furthermore, the version numbers do not
increment in the same manner
as that in the product name. E.g. Internet Explorer 3.0
carries the version
number "4.70.1155", instead of something like "5.x.x" since
version 2.0 starts
with a "4.x.x". You will have to use a lookup table
to match the version numbers against the product names.
Then there is the small matter of retrieving the version
number programmatically.
Each major version (until version 4.0) of Internet Explorer
introduces a different
way of identifying the version number from the registry; It
first started with the IVer string, then the Build
string and finally the Version string.
Microsoft seems to have come to their senses finally.
The version numbers now
correspond to their marketing counterparts (E.g. Internet
Explorer 5.5 carries the
version number "5.50.4134.0600"), and we can get the full
version string from the
Registry using the Version string value.
But if you are still, like me, required to determine
versions before Internet
Explorer 4.0, then take an aspirin for your headache before
going any further.
Disclaimer
This article contains information
extracted from MSDN.
Determining the Internet Explorer Version from the
Registry
The version number of the installed Internet Explorer
can be found under the
following registry key:
HKEY_LOCAL_MACHINE\
Software\
Microsoft\
Internet Explorer
Internet Explorer 1.0 for Windows 95 (included
with Microsoft Plus! for
Windows 95) has an IVer string value under
this key, which it sets to
"100".
Internet Explorer 2.0 for Windows 95 updates the IVer string
value to "102", and adds a Build string value
under the same key, which
it sets to "520".
Versions of Internet Explorer that are included with
Windows NT 4.0 do not add
the Build value to the registry, but they do
update the IVer
string value to "101".
Internet Explorer 3.x modifies the Build string value and
updates the IVer string value to "103". Note
that the Build
value in this version is a string that contains the
four-character build number
(E.g. "1300" for Internet Explorer 3.02).
For Internet Explorer 4.0 and later, the Build value is a
string that contains a five-character value, followed by a
period and four more
characters, in the following format:
major-version-build-number.sub-build-number
E.g. the Build value for Internet Explorer
5 is "52014.0216."
In addition, it adds a Version string value
under the same key, in
the following format.
major-version.minor-version.build-number.sub-build-number
E.g. the Version value for Internet
Explorer 5 is "5.00.2014.0216".
If none of these values is in the registry,
Internet Explorer is not installed
properly or at all.
Determining the Internet Explorer Version from
Shdocvw.dll
You may use the version number of the Shdocvw.dll (Shell
Document Object and
Control Library) file to determine the version of Internet
Explorer installed.
However, note that this approach can only be used on Internet Explorer 3.0 and
later since this file does not exist in previous
versions of Internet Explorer.
Also, do take note that the version number of this dll
is not the same as that
stored in the registry. (Although the later versions are
starting to have the same
numbers.) A table listing the version numbers of the
Shdocvw.dll file and the
corresponding versions of Internet Explorer may be found
here.
The Shdocvw.dll file is installed in the Windows\System
folder in Windows 95/98,
and in the Winnt\System32 folder in Windows NT/2000. If the
Shdocvw.dll file does not
exist, Internet Explorer 3.0 or later is not installed
properly or at all.
The following WIN32 function retrieves the major
version, minor version and build
numbers of the Shdocvw.dll that is installed on the local
system.
#include "windows.h"
#include "shlwapi.h"
HRESULT GetBrowserVersion(LPDWORD pdwMajor, LPDWORD
pdwMinor, LPDWORD pdwBuild)
{
HINSTANCE hBrowser;
if(IsBadWritePtr(pdwMajor, sizeof(DWORD))
|| IsBadWritePtr(pdwMinor, sizeof(DWORD))
|| IsBadWritePtr(pdwBuild, sizeof(DWORD)))
return E_INVALIDARG;
*pdwMajor = 0;
*pdwMinor = 0;
*pdwBuild = 0;
hBrowser = LoadLibrary(TEXT("shdocvw.dll"));
if(hBrowser)
{
HRESULT hr = S_OK;
DLLGETVERSIONPROC pDllGetVersion;
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
{
hr = E_FAIL;
}
FreeLibrary(hBrowser);
return hr;
}
return E_FAIL;
}
Internet Explorer version history
The version number of Internet Explorer uses the following format:
major-version.minor-version.build-number.sub-build number
Version | Product |
4.40.308 | Internet
Explorer 1.0 (Plus!) |
4.40.520 | Internet Explorer
2.0 |
4.70.1155 | Internet
Explorer 3.0 |
4.70.1158 | Internet Explorer 3.0
(OSR2) |
4.70.1215 | Internet
Explorer 3.01 |
4.70.1300 | Internet Explorer 3.02
and 3.02a |
4.71.544 | Internet
Explorer 4.0 Platform Preview 1.0 (PP1) |
4.71.1008.3 | Internet Explorer 4.0
Platform Preview 2.0 (PP2) |
4.71.1712.6 | Internet
Explorer 4.0 |
4.72.2106.8 | Internet Explorer
4.01 |
4.72.3110.8 | Internet
Explorer 4.01 Service Pack 1 (SP1) |
4.72.3612.1713 | Internet Explorer
4.01 Service Pack 2 (SP2) |
5.00.0518.10 | Internet
Explorer 5 Developer Preview (Beta 1) |
5.00.0910.1309 | Internet Explorer 5
Beta (Beta 2) |
5.00.2014.0216 | Internet
Explorer 5 |
5.00.2314.1003 | Internet Explorer 5
(Office 2000) |
5.00.2614.3500 | Internet
Explorer 5 (Windows 98 Second Edition) |
5.00.2516.1900 | Internet Explorer
5.01 (Windows 2000 Beta 3, build 5.00.2031) |
5.00.2919.800 | Internet
Explorer 5.01 (Windows 2000 RC1, build 5.00.2072) |
5.00.2919.3800 | Internet Explorer 5.01
(Windows 2000 RC2, build 5.00.2128) |
5.00.2919.6307 | Internet
Explorer 5.01 (Also included with Office 2000 SR-1, but not
installed by default) |
5.00.2920.0000 | Internet Explorer
5.01 (Windows 2000, build 5.00.2195) |
5.00.3103.1000 | Internet
Explorer 5.01 SP1 (Windows 2000) |
5.00.3105.0106 | Internet Explorer
5.01 SP1 (Windows 95/98 and Windows NT 4.0) |
5.00.3314.2101 | Internet
Explorer 5.01 SP2 (Windows 95/98 and Windows NT
4.0) |
5.00.3315.1000 | Internet Explorer
5.01 SP2 (Windows 2000) |
5.50.3825.1300 | Internet
Explorer 5.5 Developer Preview (Beta) |
5.50.4030.2400 | Internet Explorer
5.5 & Internet Tools Beta |
5.50.4134.0100 | Windows
Me (4.90.3000) |
5.50.4134.0600 | Internet Explorer
5.5 |
5.50.4308.2900 | Internet
Explorer 5.5 Advanced Security Privacy Beta |
5.50.4522.1800 | Internet Explorer
5.5 Service Pack 1 |
5.50.4807.2300 | Internet
Explorer 5.5 Service Pack 2 |
6.00.2462.0000 | Internet Explorer 6
Public Preview (Beta) |
6.00.2479.0006 | Internet
Explorer 6 Public Preview (Beta) Refresh |
6.00.2600.0000 | Internet Explorer 6
|
Version | Product |
4.70.1155 | Internet
Explorer 3.0 |
4.70.1158 | Internet Explorer 3.0
(OSR2) |
4.70.1215 | Internet
Explorer 3.01 |
4.70.1300 | Internet Explorer 3.02
and 3.02a |
4.71.1008.3 | Internet
Explorer 4.0 PP2 |
4.71.1712.5 | Internet Explorer
4.0 |
4.72.2106.7 | Internet
Explorer 4.01 |
4.72.3110.3 | Internet Explorer 4.01
Service Pack 1 |
4.72.3612.1707 | Internet
Explorer 4.01 SP2 |
4.72.3711.2900 | Internet Explorer 4.x with
Update for "Server-side Page Reference Redirect" Issue
installed. |
5.00.0518.5 | Internet
Explorer 5 Developer Preview (Beta 1) |
5.00.0910.1308 | Internet Explorer 5 Beta
(Beta 2) |
5.00.2014.213 | Internet
Explorer 5 |
5.00.2314.1000 | Internet Explorer 5
(Office 2000) |
5.00.2516.1900 | Internet
Explorer 5.01 (Windows 2000 Beta 3, build
5.00.2031) |
5.00.2614.3500 | Internet Explorer 5
(Windows 98 Second Edition) |
5.00.2717.2000 | Internet
Explorer 5 with Update for "Malformed Favorites Icon"
Security Issue installed. |
5.00.2721.1400 | Internet Explorer 5 with
Update for "ImportExport Favorites()" Security Issue
installed. |
5.00.2723.2900 | Internet
Explorer 5.0 with Update for "Server-side Page Reference
Redirect" Issue installed. |
5.00.2919.800 | Internet Explorer 5.01
(Windows 2000 RC1, build 5.00.2072) |
5.00.2919.3800 | Internet
Explorer 5.01 (Windows 2000 RC2, build 5.00.2128) |
5.00.2919.6307 | Internet Explorer 5.01
(Also included with Office 2000 SR-1, but not installed by
default) |
5.00.2919.6400 | Internet
Explorer 5.01 with Update for "Server-side Page Reference
Redirect" Issue installed. |
5.00.2920.0000 | Internet Explorer 5.01
(Windows 2000, build 5.00.2195) |
5.00.3103.1000 | Internet
Explorer 5.01 SP1 (Windows 2000) |
5.00.3105.0106 | Internet Explorer 5.01 SP1
(Windows 95/98 and Windows NT 4.0) |
5.00.3314.2100 | Internet
Explorer 5.01 SP2 (Windows 95/98 and Windows NT
4.0) |
5.00.3315.2879 | Internet Explorer 5.01 SP2
(Windows 2000) |
5.50.3825.1300 | Internet
Explorer 5.5 Developer Preview (Beta) |
5.50.4030.2400 | Internet Explorer 5.5 &
Internet Tools Beta |
5.50.4134.0100 | Windows
Me (4.90.3000) |
5.50.4134.0600 | Internet Explorer
5.5 |
5.50.4308.2900 | Internet
Explorer 5.5 Advanced Security Privacy Beta |
5.50.4522.1800 | Internet Explorer 5.5
Service Pack 1 |
5.50.4807.2300 | Internet
Explorer 5.5 Service Pack 2 |
6.00.2462.0000 | Internet Explorer 6 Public
Preview (Beta) |
6.00.2479.0006 | Internet
Explorer 6 Public Preview (Beta) Refresh |
6.00.2600.0000 | Internet Explorer 6
|