Platform SDK: MAPI

The Mapi32 Stub Library

Many applications support the addition of their product name to Send on the File menu through the installation of a custom version of Mapi32.dll in the system directory, such as C:\Winnt\System32 for Microsoft® Windows NT® version 4.0. This situation creates versioning problems because many applications, such as the Microsoft® Exchange client and earlier versions of Microsoft® Outlook®, require use of the system-supplied Mapi32.dll library and fail to operate properly when the new Mapi32.dll is installed. In addition, the Microsoft® Windows® 2000 series of operating systems provides administrators with the ability to lock down the C:\Winnt\System32 directory, thereby preventing applications from overwriting system dynamic-link libraries during an installation.

To avoid such dynamic-link library (DLL) clashes, Microsoft Windows 2000, Microsoft Outlook 2000, and Microsoft® Internet Explorer version 5 install a stub library called Mapi32.dll that acts as a central dispatcher for simple and extended Messaging Application Programming Interface (MAPI) calls.

The Mapi32.dll Stub Installation

During installation, the original Mapi32.dll is renamed to Eumapi32.dll if the DLL was provided by Eudora, Nsmapi32.dll if the DLL was provided by Netscape, or otherwise Mapi32x.dll. The stub library, which is contained in the file Mapi32stub.dll, then gets copied to Mapi32.dll. When the Mapi32.dll is loaded and simple or extended MAPI calls are made, the stub library dispatches the call to an appropriate DLL. The stub library uses settings in the registry under the HKLM\Software\Clients\Mail key to locate appropriate DLLs at runtime. These registry settings are described in Mapi32.dll Stub Registry Settings.

The stub DLL version number is set to 1.0 so that subsequent applications can install over the stub without the user being prompted that a newer version of the DLL is currently on the system. If you need to restore the stub, follow the instructions in Installing or Restoring the MAPI32.DLL Stub.