Microsoft KB Archive/207132

From BetaArchive Wiki

INFO: How Regsvr32.exe Registers and Unregisters COM DLLs

Q207132



The information in this article applies to:


  • Microsoft Windows 95
  • Microsoft Windows 98
  • Microsoft Windows NT Advanced Server, version 4.0
  • Microsoft Windows NT Server version 4.0
  • Microsoft Windows NT Workstation version 4.0
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows 2000 Professional
  • Microsoft Windows 2000 Server





SUMMARY

This article describes how the RegSvr32.exe program registers and unregisters a Component Object Model (COM) dynamic-link library (DLL). You can use this information to troubleshoot errors that occur when you try to use RegSvr32.exe program with your COM DLL.



MORE INFORMATION

RegSvr32.exe calls the following Win32 functions in this order:

  • OleInitialize
  • LoadLibrary to load the DLL
  • DllRegisterServer or DllUnregisterServer
  • FreeLibrary
  • OleUninitialize

Most often, RegSvr32.exe fails because the LoadLibrary, DllRegisterServer, or DllUnregisterServer function fails. LoadLibrary can fail if the DLL is not in the specified path, or if the specified path is incorrect. LoadLibrary can also fail if one of the dependencies of the DLL that you are trying to load is not met; in other words, if a dependent DLL is not present or is not in the specified path.

NOTE: You can use the Depends.exe tool to check whether or not all of the dependencies of your DLL are met. Depends.exe is included with the Microsoft Platform Software Development Kit (SDK), which ships with Microsoft Visual Studio.

Your DLL must implement DllRegisterServer and DllUnregisterServer, which contain the logic that is necessary to add or delete the required registry entries for the COM component. RegSvr32.exe finds the entry point to these functions, and calls them appropriately.

NOTE: If you use the Microsoft Active Template Library (ATL) Wizard to create the COM DLL, the Wizard generates the necessary code for DllRegisterServer and DllUnregisterServer.

If you use Microsoft Visual C++, refer to the Platform SDK sample at \Platform SDK\Samples\Com\Fundamentals\Async\Server.

Step-by-Step Example

The following sample describes registry functions that you can use to register and unregister your COM DLL.

You can also write your own code to do what RegSvr32.exe does. This helps to identify, isolate, and troubleshoot errors more easily.

To create a Win32 Application that you can use to register or unregister your COM DLL, perform the following steps:

  1. In Visual C++, create a new Win32 Application named Register. Accept all of the defaults.
  2. Create a new .cpp file named Register.cpp, and add it to the project.
  3. Paste the following code in Register.cpp:
  4. Build the application, and use it to register or unregister your COM DLL.



REFERENCES

For additional information, click the article numbers below to view the articles in the Microsoft Knowledge Base:

Q140346 Possible Reasons for OLE Control Registration Failure

Q141824 INFO: Common Remote OLE Automation Errors

Q146219 HOWTO: Register an ActiveX Control (.ocx) Manually

Q185599 FIX: OleAut32.dll Is Unregistered Incorrectly

Additional query words:

Keywords : kbCOMt kbOSWinNT400 kbOSWin2000 kbSDKWin32 kbOSWin95 kbOSWin98 kbGrpDSCom kbDSupport
Issue type : kbinfo
Technology : kbWinNTsearch kbWinNTWsearch kbWinNTW400 kbWinNTW400search kbWinNT400xsearch kbwin2000AdvServ kbwin2000AdvServSearch kbwin2000DataServ kbwin2000DataServSearch kbwin2000Serv kbWinNTSsearch kbWinNTS400xsearch kbWinNTS400 kbWinNTAdvSerSearch kbWinNTAdvServ400 kbwin2000ServSearch kbwin2000Search kbwin2000ProSearch kbwin2000Pro kbWin95search kbWin98search kbWinAdvServSearch kbWinDataServSearch kbZNotKeyword3 kbWin98


Last Reviewed: October 23, 2000
© 2001 Microsoft Corporation. All rights reserved. Terms of Use.