SHLWAPI Versions

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.

SHLWAPI Version Distribution
Internet Explorer Windows NT
4.70 3.01, 3.02 Windows 95 OSR2  
4.71 4.0    
4.72 4.01 Windows 98  
5.0 5.0, 5.01 Windows 98 SE Windows 2000
5.50 5.5 Windows Me  
6.0 6.0, 7.0, 8.0   Windows XP,
Windows Server 2003,
Windows Vista,
Windows Server 2008
6.1     Windows 7

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.

Builds

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
4.70.0.1155 3208B5F3 (8th August 1996) 36,864 Windows 95 OSR2
4.70.0.1215 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.

Build Number Shorthand

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.