文章編號: 184802 - 上次校閱: 2008年2月26日 - 版次: 11.3

User32.dll 或 Kernel32.dll 初始化失敗

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

徵狀

有時 CreateProcess() 或是 CreateProcessAsUser() 失敗,且您所執行的應用程式會收到下列錯誤訊息其中:
初始化動態程式庫 <system>\system32\user32.dll 失敗。正在異常終止處理程序。
初始化動態程式庫 <system>\system32\kernel32.dll 失敗。正在異常終止處理程序。
失敗的處理程序會傳回結束碼 128 或
ERROR_WAIT_NO_CHILDREN

發生的原因

失敗被因下列其中一項:
  1. 執行處理序沒有適當的安全性存取視窗工作站及處理程序相關聯的桌面。
  2. 系統已用完桌面堆集。

其他相關資訊

原因 1

執行處理序沒有適當的安全性存取視窗工作站及處理程序相關聯的桌面。

傳遞給 CreateProcess()CreateProcessAsUser() STARTUPINFO 結構 lpDesktop 成員指定哪些視窗工作站,而且桌面執行的處理序相關聯。執行處理程序必須有適當的安全性存取權指定的視窗工作站和桌上型電腦。

如更多有關解決視窗電台與桌上型電腦的安全性問題的資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
165194? (http://support.microsoft.com/kb/165194/ ) CreateProcessAsUser() windowstations 和桌上型電腦

原因 2

系統已用完桌面堆集。

在系統上的每個桌面物件有與其相關聯的桌面堆積。桌面的物件使用堆積 (Heap) 來儲存功能表、 勾點、 字串及視窗。系統會從全系統 48 MB 緩衝區配置桌面堆集。除了桌面堆積印表機及字型驅動程式也會使用這個緩衝區。

桌面是與視窗電台相關。視窗工作站可以包含零個或更多的桌上型電腦。桌面堆積配置視窗工作站相關聯的桌面的大小可以變更下列登錄值中。

附註Microsoft 建議您不要使用 / 3GB 參數。在 boot.ini 檔案中指定 / 3GB 參數。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows
此登錄值預設的資料看起來像下列的 (全部在同一行):
   %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
				
後面的數字值"SharedSection ="控制項如何桌面堆積配置。這些 SharedSection 值被指定的千位元組 (KB)。有不同的互動性和非互動式的視窗工作站相關聯的桌上型電腦的設定。

附註如果修改登錄中的 SharedSection 值,將必須重新啟動系統所做的變更生效之前。

重要這個區段、 方法或任務包含告訴您如何修改登錄的步驟。然而,如果您不當修改登錄,可能會發生嚴重的問題。因此,執行這些步驟時請務必小心。為加強保護,修改登錄之前,請務必將它備份起來。以後您就可以在發生問題時還原登錄。如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
322756? (http://support.microsoft.com/kb/322756/ ) 如何備份和還原在 Windows 登錄


第一個 SharedSection 值 (1024) 是共用的堆積大小通用於所有的桌上型電腦。這包括視窗、 功能表、 圖示、 游標,和等等等等與共用的系統設定值會保留控點的 [全域控點] 資料表。不太您曾經需要變更這個值。

第二個 SharedSection 值 (3072) 是為每個互動式 」 視窗工作站 WinSta0 相關聯的桌面桌面堆積的大小。使用者物件喜歡勾點、 功能表、 字串,和視窗取用這個桌面堆積的記憶體。不太您會不斷需要變更這個第二個 SharedSection 值。

會在互動式視窗工作站中建立的每個桌面會使用預設 3072 KB 桌面堆集。預設情況下,有三個桌上型電腦系統建立 Winsta0 中:
  • Winlogon
  • 預設值-將由其中 Winsta0\default 」 以 STARTUPINFO.lpDesktop 結構成員指定的所有處理程序使用應用程式桌面的 [預設]。當 lpDesktop 結構成員 為 NULL 時視窗工作站及桌面被繼承自父處理序。選取 [允許服務與桌面互動] 啟動選項 LocalSystem 帳戶下執行的所有服務將都使用 Winsta0\Default 」。所有這些處理程序將會共用相同的桌面堆積,[預設] 應用程式桌面相關聯。
  • 顯示螢幕保護裝置時,便會在互動式視窗工作站 (WinSta0) 中建立 螢幕保護裝置 的螢幕保護裝置的桌面。
第三個 SharedSection 值 (512) 是針對每個 「 非互動式 」 視窗工作站與相關聯的桌面桌面堆積的大小。如果這個值不存在,非互動式的視窗工作站桌面的堆積的大小會與為互動式視窗工作站 (第二個 SharedSection 值) 指定大小相同]。

如果只有兩個 SharedSection 值都存在,您可以新增 「,512"做為第三個值來指定在非互動式的視窗工作站中建立的桌上型電腦桌面的堆積大小。

使用者帳戶下執行每個服務處理程序將會收到新的桌面中非互動式的視窗工作站建立服務控制管理員 (SCM)。因此,使用者帳戶下執行每項服務會消耗第三個 SharedSection 值中所指定的桌面堆積的 KB 的數。允許服務與桌面互動 與在 LocalSystem 帳戶下執行的所有服務 選取的共用桌面堆積的非互動式的服務的視窗站 (服務 0x0 3e7 $) 中的 [預設] 桌面。

總桌面堆積所使用的互動性和非互動式的視窗工作站必須符合 48 MB 全系統的緩衝區。

減少第二個或第三個 SharedSection 值會增加可在相對應的視窗工作站中建立的桌上型電腦數目。較小的值將會限制勾點、 功能表、 字串和可以建立一個桌面內的視窗的數。同樣,增加第二個或第三個 SharedSection 值會減少可建立的桌上型電腦的數目,但它將會增加的勾點、 功能表、 字串和可以建立一個桌面內的視窗數。

因為 SCM 在非互動式的視窗站使用者帳戶下執行每個服務處理程序中建立新的桌面,較大的桌面值,第三個 SharedSection 值會減少可以在系統順利執行的使用者帳號服務的數目。可以指定為第二個或第三個 SharedSection 值最小值是 128。 嘗試使用較小的值會預設為 128。

桌面堆集是由 User32.dll 所配置的當一個程序需要的使用者物件。如果應用程式不依賴 User32.dll,它不會消耗桌面堆集。

附註在 Windows Server 2003 會在系統事件日誌中記錄特定事件其中一種下列情況時:
  • 如果桌面堆集已滿,會記錄下列事件:

    事件類型: 警告
    事件來源: Win32k
    事件類別: 無
    事件識別碼: 243
    日期: Date
    時間: Time
    使用者: N/A
    電腦: ServerName
    描述: A 桌面堆集配置失敗。

    在這種情況下增加桌面堆集大小。
  • 如果總桌面堆積會變成全系統的緩衝區大小,會記錄下列事件:

    事件類型: 警告
    事件來源: Win32k
    事件類別: 無
    事件識別碼: 244
    日期: Date
    時間: Time
    使用者: N/A
    電腦: ServerName
    描述: 無法建立桌面 (因為桌面堆集耗盡。

    在這種情況下減少桌面堆集大小。
在 Windows Server 2003 全系統的緩衝區發生下列情況之一時是 20 MB:
  • 您是在終端機服務環境。
  • 在 Boot.ini 檔案中指定 / 3GB 參數。

這篇文章中的資訊適用於:
  • Microsoft Win32 Application Programming Interface?應用於:
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows 2000
    • Microsoft Windows XP Professional
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
關鍵字:?
kbmt kbdll kbkernbase kbprb kbsecurity KB184802 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:184802? (http://support.microsoft.com/kb/184802/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。