Geoff Chappell - Software Analyst
The Shell Light-Weight Utility library (SHLWAPI.DLL) has so far existed in seven variations considered by Microsoft to have sufficient external impact to deserve at least a difference in the minor version number.
|4.70||3.01, 3.02||Windows 95 OSR2|
|5.0||5.0, 5.01||Windows 98 SE||Windows 2000|
|6.0||6.0, 7.0, 8.0||Windows XP,
Windows Server 2003,
Windows Server 2008
The earliest part of this history seems to have got lost at Microsoft. The page Shell and Common Controls Versions in the MSDN Library reviews the history of the major shell DLLs and is surely intended as authoritative. Yet until at least 2007, Microsoft claimed on this page that “Shlwapi.dll first shipped with Internet Explorer 4.0, so its first version number is 4.71.” At Microsoft’s website today (16th September 2008), the text is slightly different. It is now said that “Shlwapi.dll shipped with Internet Explorer 4.0, so its initial version number here is 4.71” as if to dismiss any earlier version as being out of context. But the context that Microsoft sets immediately before is:
The following table outlines the different DLL versions and how they were distributed dating back to Microsoft Internet Explorer 3.0, Microsoft Windows 95, and Microsoft Windows NT 4.0.
I think therefore that the version 4.70 from Internet Explorer 3.0 and Windows 95 OSR2 must still be counted as missing from Microsoft’s account of SHLWAPI’s history. It’s just that it now looks more likely that the early history is not lost at all, but is something that Microsoft actively seeks to brush away.
Again until at least 2007, Microsoft’s page also overlooked version 5.50, making no mention of Internet Explorer 5.5 and also noting incorrectly that Windows Me has “version 5.0 of Shlwapi.dll”. The online version today (16th September 2008) does at last list SHLWAPI version 5.5 in the table, but retains the incorrect note.
SHLWAPI was for many years distributed with Internet Explorer. Indeed, it was often that the earliest way to obtain new SHLWAPI functionality was to install Internet Explorer and there is some argument that Microsoft has regarded SHLWAPI as an Internet Explorer component, even though SHLWAPI is essential to the Windows Shell even for work that has nothing to do with the Internet. The Internet Explorer 8.0 packages for Windows XP and for Windows Server 2003 include SHLWAPI but the package for Windows Vista does not.
Though the next table fusses over such details as build numbers and dates, it is certainly not meant as a comprehensive list even of builds that had formal, public releases. For that, consult Microsoft, who manufacture the software and are surely best able of anyone to present a definitive record. Bear in mind, however, that if Microsoft’s published documentation could sensibly be relied on as either comprehensive or accurate, then you could not now be reading these notes.
Builds are arranged in increasing order of the file version as recorded in the executable’s resources. This version number is readily visible using Windows Explorer either in a so-called infotip for the file or by accessing the Version tab in the Properties dialog for the file. Programmers know this version number as coming from the so-called root block of the version-information resource, specifically from the dwFileVersionMS and dwFileVersionLS members of a VS_FIXEDFILEINFO structure.
The date stamp shown for each version is more obscure. File dates are easily modified after the executable is built and are anyway liable to be shown differently when read from different time zones. However, there is in each executable’s header a date stamp which is set when the executable is built and which is not commonly changed afterwards. It is readily accessible to anyone with programming knowledge and appropriate tools, e.g., Microsoft’s own DUMPBIN utility.
Most Internet Explorer versions supply the executable separately for Windows and NT (and in some cases with a further separation for NT 4.0 and Windows 2000). Where two date stamps are presented on the same row for an Internet Explorer release, it means that the Windows and NT executables differ only in the file header’s date stamp and checksum (and that the date stamps are from the same day).
|File Version||File Header Date Stamp||Size||Package|
|18.104.22.1685||3208B5F3 (8th August 1996)||36,864||Windows 95 OSR2|
|22.214.171.1245||3262E2E1 (15th October 1996)||37,376||Internet Explorer 3.01, 3.02|
|4.71.1712.0||34217239 (19th September 1997)||131,856||Internet Explorer 4.0 (Windows)|
|342173A5 (19th September 1997)||131,856||Internet Explorer 4.0 (NT)|
|4.72.2106.4||3472465D (19th November 1997)||131,856||Internet Explorer 4.01 (Windows)|
|347247A4 (19th November 1997)||131,856||Internet Explorer 4.01 (NT)|
|4.72.3110.0||35060D92 (11th March 1998)||131,856||Windows 98|
|3553AA2A (9th May 1998)
36EEB3DF (17th March 1999)
|131,856||Internet Explorer 4.01 SP1 (Windows)
Internet Explorer 4.01 SP2 (Windows)
|3553AB87 (9th May 1998)
36EEB5B0 (17th March 1999)
|131,856||Internet Explorer 4.01 SP1 (NT)
Internet Explorer 4.01 SP2 (NT)
|5.0.2314.1000||36F1D8DA, 36F1DBAA (19th March 1999)||282,896||Internet Explorer 5.0|
|5.0.2614.3500||3717633E (17th April 1999)||282,896||Windows 98 SE|
|5.0.2920.0||3844D035 (1st December 1999)||289,552||Windows 2000|
|5.0.3103.1000||39299478 (23rd May 2000)||279,312||Internet Explorer 5.01 (Windows 2000)|
|3947EB46 (15th June 2000)||289,040||Windows 2000 SP1|
|5.0.3105.105||3941292D, 39412A8B (10th June 2000)||288,528||Internet Explorer 5.01 (Windows and NT)|
|5.0.3502.4373||3BDFA427 (31st October 2001)||289,552||Windows 2000 SP2|
|5.0.3502.5332||3D3D020B (23rd July 2002)||290,064||Windows 2000 SP3|
|5.0.3502.6601||3EF274DC (20th June 2003)||289,552||Windows 2000 SP4|
|5.50.4134.100||393701CE (2nd June 2000)||302,352||Windows Me|
|5.50.4134.600||393D8770, 393D8BED (7th June 2000)||300,304||Internet Explorer 5.5|
|5.50.4807.2300||3B5CD625, 3B5CD97B (24th July 2001)||301,328||Internet Explorer 5.5 SP2|
|6.0.2600.0||3B7DFE10 (18th August 2001)||397,824||Windows XP|
|3B7DFE49, 3B7DFFE3 (18th August 2001)||391,168||Internet Explorer 6.0|
|6.0.2800.1106||3D6DFA02 (29th August 2002)||401,920||Windows XP SP1|
|3D6E2AA6, 3D6E2BF2 (30th August 2002)||395,264||Internet Explorer 6.0 SP1|
|6.0.2900.2833||43D6EB0C (25th January 2006)||474,112||Windows XP SP2|
|6.0.2900.2995||45091361 (14th September 2006)||474,112||Internet Explorer 7.0 for Windows XP
Internet Explorer 8.0 for Windows XP
|6.0.2900.5512||4802A116 (14th April 2008)||474,112||Windows XP SP3|
|6.0.3790.0||3E802498 (25th March 2003)||287,744||Windows Server 2003|
|6.0.3790.1830||424377DE (25th March 2005)||321,024||Windows Server 2003 SP1|
|6.0.3790.2795||45108CD1 (20th September 2006)||321,536||Internet Explorer 7.0 for Windows Server 2003
Internet Explorer 8.0 for Windows Server 2003
|6.0.3790.3959||45D70AC0 (18th February 2007)||320,000||Windows Server 2003 SP2|
|6.0.6000.16386||4549BDB9 (2nd November 2006)||339,968||Windows Vista|
|6.0.6001.18000||4791A75C (19th January 2008)||351,744||Windows Vista SP1
Windows Server 2008
|6.0.6002.18005||49E037F1 (11th April 2009)||353,280||Windows Vista SP2|
|6.1.7600.16385||4A5BDB05 (14th July 2009)||339,968||Windows 7|
The difference between the NT versions of Internet Explorer 4.01 Service Packs 1 and 2 is because of rebasing, including to change the file header’s date stamp and checksum. The Windows versions differ just in the date stamp and checksum (perhaps because rebasing was performed but with the new and old base addresses happening to be the same).
No Internet Explorer 5.5 SP1 was found for this study.
SHLWAPI’s programming interface varies from build to build of some major versions. The variation becomes especially complicated for version 6.0, not just because of the long life of the version over four streams of the Windows product and two of Internet Explorer, but also because of a significant muddle over ordinals for undocumented functions added for Windows XP SP2 and Windows Server 2003 SP1.
This study refers to applicable products and service packs in ascending order of versions and build numbers. Be aware that this is not chronological order. For instance, the phrase “version 6.0 from Windows XP SP2 and higher” also includes all builds of version 6.0 from Windows Server 2003, even though the original Windows Server 2003 predates Windows XP SP2. Where the original Windows Server 2003 is excluded, as sometimes is needed, the two products are specified: “version 6.0 from Windows XP SP2 and Windows Server 2003 SP1 and higher”. A comma before “and higher” indicates that the description takes in not only higher builds from the stated version but also higher versions. For instance, the phrase “version 6.0 from Windows XP SP2, and higher” also includes version 6.10 from Windows 7.
Except if noted differently, builds of SHLWAPI from Internet Explorer 7.0 and 8.0 for Windows XP are counted as if from Windows XP SP2, and builds for Windows Server 2003 are counted as if from Windows Server 2003 SP1.