Microsoft KB Archive/142676

= Overcoming User32.dll Initialization Failure Errors =

Article ID: 142676

Article Last Modified on 11/1/2006

-

APPLIES TO


 * Microsoft Windows NT Workstation 4.0 Developer Edition
 * Microsoft Windows NT Server 4.0 Standard Edition

-



This article was previously published under Q142676



IMPORTANT: This article contains information about modifying the registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs. For information about how to back up, restore, and edit the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows Registry



SYMPTOMS
When you try to start a service a pop-up dialog box appears with the following message:

- DLL initialization failure Initialization of the dynamic link library c:\windows\system32\user32.dll failed. The process is terminating abnormally.



CAUSE
The system has run out of memory to create a new desktop heap for the service being started.



RESOLUTION
WARNING: If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.

To fix this behavior, you must edit the registry and restart the computer that is affected.
 * 1) Run the Registry Editor(Regedt32.exe).
 * 2) Under the HKEY_LOCAL_MACHINE subtree, go to the following subkey:

\System\CurrentControlSet\Control\Session Manager\ SubSystems\Windows

The default data for this value may look something like the following (all on one line):

  %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16

You must make the following change to this value:

Scan along the line until you reach the part that defines the SharedSection values and add ",512" after the second number. This value should now look something like the following:

  %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16

After making this change, quit Regedt32, and then restart the server.

This change limits the size of desktop heaps created by non-interactive services to 512 KB, which should be ample for most services.

Adding this optional third value defines the desktop heap size for non-interactive desktops (services) as 512K. By default, they may use the same desktop heap size as interactive desktops, which is defined by the second value (3072, or 3 MB). The minimum that this third value can be set to is 128. Any attempts to set this value to less than 128 result in 128 being used. If you set this value to 512, approximately 90 services can be started before this behavior reoccurs.



STATUS
This behavior is by design. The registry entry enables users to override the default settings.



MORE INFORMATION
For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

184802 PRB: User32.dll or Kernel32.dll Fails to Initialize

Additional query words: Exchange SMS SNA SQL Server prodnt stop initialize initialized heap space heapspace winstation desktop user32 dll Initialization failed dynamic link system32

Keywords: kbenv KB142676

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.