In efforts to improve code efficiency and lower the total cost of ownership for our products, Microsoft has recommended to internal developers to use a common Automation Library for handling dates. Over the years, the library has been updated to reflect changing customer needs and add additional functionality. Updated versions of the library are installed with major product releases such as Microsoft Office, Microsoft Visual Studio and Microsoft Internet Explorer.
How do I know if I have the automation library?
If you're running Windows 95 or Windows NT 3.51 or later, then you use the automation library.
What makes up the automation library?
Four files make up the automation library. These files are:
- oleaut32.dll
- olepro32.dll
- asycfilt.dll
- stdole2.tlb
These files are installed either by the operating system or an application.
How does the automation library affect year 2000 issues?
The automation library contains routines for interpreting 2-digit years and provides a convenient way for applications to create unambiguous (serial) dates. So, many of your applications probably use the automation libraries for date handling.
Over the years the automation libraries have been revised with regards to their date formatting behavior:
The cutoff above refers to how dates with 2-digit years are evaluated when the Automation Libraries are asked to covert them into an absolute date. From 2.20.4049 and onward, any 2-digit year that is entered is assumed to lie between 1930 and 2029. The user on those operating systems, starting with version 2.30.4257, can change the date window where the control panel allows it.
When the Automation Libraries output a date as a string, the string is also formatted differently depending on which version of the Automation Libraries is being used. Starting with 2.20.4049, dates before 1930 or after the year 2000 will have the year field output as a 4-digit date, even if 2-digit display is the preferred mode in the operating systemÆs control panel. Starting with 2.30.4257 dates from 1930 to 2029 are output with 2-digit years (if that is the preferred format in the control panel).
Here are some examples, where quotes represent input to and output from the Automation Libraries:
Starting with Version 2.20.4049:
"1/1/30" is interpreted as January 1st, 1930, and January 1st, 1930 is output as "1/1/30".
"1/1/29" is interpreted as January 1st, 2029, and January 1st, 2029 is output as "1/1/2029"
"1/1/00" is interpreted as January 1st, 2000, and January 1st, 2000 is output as "1/1/2000"
"1/1/99" is interpreted as January 1st, 1999, and January 1st, 1999 is output as "1/1/99"
Starting with Version 2.30.4257:
"1/1/30" is interpreted as January 1st, 1930, and January 1st, 1930 is output as "1/1/30".
"1/1/29" is interpreted as January 1st, 2029, and January 1st, 2029 is output as "1/1/29"
"1/1/00" is interpreted as January 1st, 2000, and January 1st, 2000 is output as "1/1/00"
"1/1/99" is interpreted as January 1st, 1999, and January 1st, 1999 is output as "1/1/99"
How do I know what version of the automation libraries my computer has?
Click the Start button, select the Find menu item, and click on "Files or Folders..." In the "Name & Location" tab, type (without quotes) "oleaut32.dll" in the field titled "Named." Select the drive in the "Look in" field that your operating system lives on (usually (C:) ). Click "Find Now." When the file shows up in the box below, right click on the file and select "Properties." Click the right hand tab that says "Version."
Name some applications that use automation libraries
Microsoft Office 95 and later
Microsoft Visual Studio (including Visual C++, Visual Basic, Visual Interdev and custom applications)
Microsoft Windows 95, Windows 98, Windows NT Workstation, Windows NT Server
Microsoft Internet Explorer
What are the implications for the organization with multiple versions of the automation libraries?
There are a few year 2000 issues that could result from different users having different versions of the automation libraries. These all involve the interpretation of years entered with only two digits. If your software applications and users enter four digit years, there are no problems. If your users or software are entering 2-digit years, then a scenario where different machines are entering years in different centuries is possible. For example, a data entry department could be running a custom application on both Windows NT 3.51 (without service packs) and on Windows NT 4.0 Workstation. If the users are entering dates like 1/1/10, the NT 3.51 machines could record the date as January 1, 1910 while the NT 4.0 machines may record January 1, 2010. By installing the latest service packs or newer applications (like Microsoft Office 97 or Internet Explorer 4.0), you can assure that your systems have more consistent date handling.
For Windows 95 and Windows 98 year 2000 information and updates, see