User32.dll の初期化失敗エラーへの対処方法



重要 : この資料には、レジストリの編集方法が記載されています。万一に備えて、編集の前には必ずレジストリをバックアップし、レジストリの復元方法を理解しておいてください。バックアップ、復元、および編集方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
256986 Microsoft Windows レジストリの説明

現象


サービスを開始しようとすると、次のメッセージがダイアログ ボックスに表示される場合があります。
ServiceName - ダイナミック リンク ライブラリ c:\windows\system32\user32.dll の初期化に失敗しました。プロセスは異常終了します。

原因


システムで、開始するサービス用の新しいデスクトップ ヒープを作成するためのメモリが不足しています。

解決方法


警告 : レジストリ エディタの使い方を誤ると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリ エディタの誤用により発生した問題に関しては、一切責任を負わないものとします。レジストリ エディタは、自己の責任においてご使用ください。



この現象を修正するには、レジストリを編集し、この問題の影響を受けたコンピュータを再起動する必要があります。
  1. レジストリ エディタ (Regedt32.exe) を起動します。
  2. HKEY_LOCAL_MACHINE サブツリーの下にある次のサブキーを見つけてクリックします。


    \System\CurrentControlSet\Control\Session Manager\ SubSystems\Windows
このデータのデフォルト値は、次のとおりです (全体で 1 行)。



%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


次の手順に従って、この値を変更する必要があります。


SharedSection の値を定義している部分を探し、2 番目の数字の後に ",512" を付け加えます。つまり、この値は次のようになります。



%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


この変更を加えた後 Regedt32 を終了し、サーバーを再起動します。


この変更により、非対話型サービスによって作成されるデスクトップ ヒープのサイズが 512 KB に制限されます。この値は、ほとんどのサービスにとって十分な大きさです。


任意指定の 3 番目の値を追加することで、非対話型デスクトップ (サービス) のデスクトップ ヒープ サイズが 512 KB と定義されます。デフォルトでは、対話型デスクトップと同じデスクトップ ヒープ サイズが使用される場合があります。この値は 2 番目の値 (3072 つまり 3 MB) で定義されています。この 3 番目の値に設定できる最小値は 128 です。128 よりも小さな値を指定した場合でも、128 が使用されます。この値を 512 に設定すると、上記の問題が再発する前に、およそ 90 個までのサービスを開始することができます。

状況


この動作は仕様です。レジストリ エントリを使用すると、デフォルトの設定値を再定義することができます。

詳細


関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
184802 [PRB] User32.dll または Kernel32.dll の初期化に失敗する

関連情報


この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 142676 (最終更新日 2004-04-03) を基に作成したものです。