Fehlerbehebung: Fehlschlagen der Initialisierung von User32.dll

Gilt für: Microsoft Windows XP Home EditionMicrosoft Windows XP ProfessionalMicrosoft Windows Server 2003 Standard Edition (32-bit x86)

Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
142676 Overcoming User32.dll Initialization Failure Errors

Wichtig: Dieser Artikel enthält Informationen zum Bearbeiten der Registrierung. Bevor Sie die Registrierung bearbeiten, vergewissern Sie sich bitte, dass Sie die Registrierung wiederherstellen können, falls ein Problem auftritt. Weitere Informationen zum Erstellen einer Sicherungskopie, zum Wiederherstellen und Bearbeiten der Registrierung finden Sie in folgendem Artikel der Microsoft Knowledge Base:
256986 Beschreibung der Microsoft Windows-Registrierung

Problembeschreibung


Wenn Sie versuchen, einen Dienst zu starten, wird ein Popupdialogfeld mit der folgenden Meldung angezeigt:
Dienstname DLL-Initialisierung gescheitert Initialisierung der DLL C:\Windows\System32\User32.dll gescheitert. Prozess wird nicht normal beendet.

Ursache


Dem System steht nicht ausreichend Arbeitsspeicher zur Verfügung, um einen neuen Desktopheap für den Dienst zu erstellen, der gestartet werden soll.

Lösung


Warnung: Die unkorrekte Verwendung des Registrierungseditors kann schwerwiegende, das gesamte System betreffende Probleme verursachen, die eine Neuinstallation Ihres Betriebssystems erforderlich machen. Microsoft kann nicht garantieren, dass Probleme, die von einer falschen Verwendung des Registrierungseditors herrühren, behoben werden können. Benutzen Sie den Registrierungseditor auf eigene Verantwortung.


Um das Problem zu beheben, müssen Sie die Registrierung bearbeiten und den Computer anschließend neu starten.
  1. Führen Sie den Registrierungseditor (Regedt32.exe) aus.
  2. Wechseln Sie in der Teilstruktur HKEY_LOCAL_MACHINE zum folgenden Teilschlüssel:

    \System\CurrentControlSet\Control\Session Manager\ SubSystems\Windows
Standardmäßig weist dieser Schlüssel einen Wert auf, der ungefähr dem folgenden entspricht (die folgende Angabe stellt eine einzige Zeile dar):


%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


Sie müssen die folgende Änderung an diesem Wert vornehmen:

Suchen Sie den Abschnitt der Zeile, in der die Werte für "SharedSection" definiert werden, und fügen Sie nach der zweiten Zahl den Wert ",512" ein. Dieser Wert sollte jetzt in etwa wie folgt aussehen:


%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


Nachdem Sie diese Änderung vorgenommen haben, müssen Sie Regedt32 beenden und den Server neu starten.

Durch diese Änderung wird die Größe von Desktopheaps, die von nicht interaktiven Diensten erstellt werden, auf 512 KB beschränkt, was für die meisten Dienste ausreichen sollte.

Durch das Hinzufügen dieses optionalen dritten Werts wird die Desktop-Heapgröße für nicht-interaktive Desktops (Dienste) mit 512 KB konfiguriert. Standardmäßig wird möglicherweise die gleiche Desktop-Heapgröße für interaktive Desktops verwendet, das als zweiter Wert mit 3072 bzw. 3 MB definiert ist. Der Minimum-Wert für den dritten Wert ist 128. Auch wenn Sie versuchen, den Wert auf weniger als 128 zu setzen, wird trotzdem 128 verwendet. Wenn Sie den Wert auf 512 setzen, können Sie ca. 90 Dienste starten, bevor dieses Problem wieder auftritt.

Status


Es handelt sich hierbei um ein beabsichtigtes Verhalten. Mit diesem Registrierungswert können Benutzer die Standardeinstellungen außer Kraft setzen.

Weitere Informationen


Weitere Informationen finden Sie in folgendem Artikel der Microsoft Knowledge Base:
184802 PRB: User32.dll oder Kernel32.dll schlagen zu Initialize fehl
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.