Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt een probleem beschreven waarbij een toepassing die wordt uitgevoerd door CreateProcess
of CreateProcessAsUser
kan mislukken.
Van toepassing op: Microsoft Windows
Oorspronkelijk KB-nummer: 184802
Symptomen
Een toepassing die wordt uitgevoerd door CreateProcess
of CreateProcessAsUser
kan mislukken en u ontvangt een van de volgende foutberichten:
Initialisatie van het dynamische bibliotheeksysteem <>\system32\user32.dll is mislukt. Het proces wordt abnormaal beëindigd. Initialisatie van het dynamische bibliotheeksysteem <>\system32\kernel32.dll is mislukt. Het proces wordt abnormaal beëindigd.
Daarnaast retourneert het mislukte proces afsluitcode 128 of het volgende:
fout:ERROR_WAIT_NO_CHILDREN
Oorzaak
Deze fout treedt op om een van de volgende redenen:
Het uitgevoerde proces heeft geen juiste beveiligingstoegang tot het vensterstation en het bureaublad die aan het proces zijn gekoppeld.
Er is geen desktop heap meer op het systeem.
Meer informatie
Oorzaak 1
Het uitgevoerde proces heeft geen juiste beveiligingstoegang tot het vensterstation en het bureaublad die aan het proces zijn gekoppeld.
Het lpDesktop-lid van de STARTUPINFO-structuur die wordt doorgegeven aan
CreateProcess
ofCreateProcessAsUser
specificeert het vensterstation en het bureaublad die zijn gekoppeld aan het uitgevoerde proces. Het uitgevoerde proces moet de juiste beveiligingstoegang hebben tot het opgegeven vensterstation en het bureaublad.Oorzaak 2
Er is geen desktop heap meer op het systeem.
Elk bureaubladobject op het systeem heeft een bureaublad-heap die eraan is gekoppeld. Het desktopobject gebruikt de heap om menu's, hooks, tekenreeksen en vensters op te slaan. In Windows Server 2003 en Windows XP 32-bit wijst het systeem desktop heap toe vanuit een buffer van 48 MB (megabytes) die systeembreed is. Naast desktop-geheugen gebruiken ook printerstuurprogramma's en lettertypestuurprogramma's deze buffer.
Het bureaublad is gekoppeld aan een vensterstation. Een vensterstation kan geen of meerdere bureaubladen bevatten. U kunt de grootte wijzigen van de bureaublad-heap die is toegewezen voor een bureaublad dat is gekoppeld aan een vensterstation door de volgende registerwaarde te wijzigen.
Opmerking
We raden u niet aan om de /3 GB switch te gebruiken. De schakeloptie /3 GB is opgegeven in het Boot.ini-bestand. De /3 GB-switch wordt alleen ondersteund voor 32-bits besturingssystemen.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows
In Windows Server 2003 en Windows XP 32-bits lijken de standaardgegevens voor deze registerwaarde op het volgende (allemaal op één regel):
%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
In verschillende versies van Windows lijken de standaardgegevens voor deze registerwaarde op het volgende:
Voor Windows Vista RTM (32-bits)
SharedSection=1024,3072,512
Voor Windows Vista SP1, Windows 7, Windows 8, Windows 8.1 (32-bits) en Windows Server 2008 (32-bits)
SharedSection=1024,12288,512
Voor Windows Vista, Windows 7, Windows 8, Windows 8.1 (64-bits), Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 en Windows Server 2012 R2 (64-bits)
SharedSection=1024,20480,768
De numerieke waarden die volgen SharedSection=
, bepalen hoe de bureaublad-heap wordt toegewezen. Deze SharedSection
waarden worden opgegeven in kilobytes. Er zijn afzonderlijke instellingen voor bureaubladen die zijn gekoppeld aan interactieve en niet-inactieve vensterstations.
Opmerking
Als u de SharedSection
waarden in het register wijzigt, moet u het systeem opnieuw starten om de wijzigingen van kracht te laten worden.
Belangrijk
Dit gedeelte, deze methode of taak bevat stappen die je vertellen hoe je het register kunt wijzigen. Er kunnen echter ernstige problemen optreden als u het register onjuist wijzigt. Zorg er daarom voor dat u deze stappen zorgvuldig volgt. Maak voor extra beveiliging een back-up van het register voordat u het wijzigt. Vervolgens kunt u het register herstellen als er een probleem optreedt. Voor meer informatie over hoe u het register kunt back-uppen en herstellen, zie Hoe het register in Windows back-uppen en herstellen.
De eerste SharedSection
waarde (1024) is de gedeelde heapgrootte die gebruikelijk is voor alle bureaubladen. Dit omvat de algemene ingangstabel. Deze tabel bevat ingangen voor vensters, menu's, pictogrammen, cursors, enzovoort, en gedeelde systeeminstellingen. Het is onwaarschijnlijk dat u deze waarde ooit moet wijzigen.
De tweede SharedSection
waarde is de grootte van de bureaublad-heap voor elk bureaublad dat is gekoppeld aan het interactieve vensterstation WinSta0. Gebruikersobjecten zoals hooks, menu's, tekenreeksen en vensters verbruiken geheugen in deze bureaublad-heap. Het is onwaarschijnlijk dat u deze waarde ooit moet wijzigen.
Elk bureaublad dat in het interactieve vensterstation wordt gemaakt, maakt gebruik van de standaard bureaublad heap van 3072 KB. Standaard maakt het systeem de volgende drie bureaubladen in Winsta0:
Winlogon
Verstek
Het bureaublad van de standaardtoepassing wordt gebruikt door alle processen waarvoor
Winsta0\default
is opgegeven in het lid STARTUPINFO.lpDesktop-structuur. Wanneer het lid van de lpDesktop-structuur NULL is, worden het vensterstation en het bureaublad overgenomen van het bovenliggende proces. Alle services die worden uitgevoerd onder het LocalSystem-account met de opstartoptie "Service toestaan om met bureaublad te communiceren", zullenWinsta0\Default
gebruiken. Al deze processen delen de desktop heap die is gekoppeld aan het bureaublad van de standaard applicatie.Schermbeveiliging
Het schermbeveiligingsbureaublad wordt gemaakt in het interactieve vensterstation (WinSta0) wanneer een schermbeveiliging wordt getoond.
De derde SharedSection-waarde is de grootte van de bureaublad-heap voor elk bureaublad dat is gekoppeld aan een niet-interactief vensterstation. Als deze waarde niet aanwezig is, is de grootte van de bureaublad-heap voor niet-interactieve vensterstations hetzelfde als de grootte die is opgegeven voor interactieve vensterstations (dat wil gezegd de tweede SharedSection-waarde).
Als er slechts twee SharedSection-waarden aanwezig zijn, kunt u een derde waarde toevoegen om de grootte van de bureaublad-heap op te geven voor bureaubladen die zijn gemaakt in niet-interactieve vensterstations.
Elk serviceproces dat wordt uitgevoerd onder een gebruikersaccount, ontvangt een nieuw bureaublad in een niet-interactief vensterstation dat is gemaakt door Service Control Manager (SCM). Daarom verbruikt elke service die wordt uitgevoerd onder een gebruikersaccount het aantal kilobytes aan desktop-heap dat is opgegeven in de derde SharedSection-waarde. Alle services die worden uitgevoerd onder het LocalSystem-account wanneer de optie 'Sta de service toe om te communiceren met het bureaublad' niet is geselecteerd, delen de bureaublad-heap van het standaard bureaublad in de windows station van het niet-interactieve servicevenster (Service-0x0-3e7$).
De totale bureaublad-heap die wordt gebruikt in de interactieve en niet-interactieve vensterstations moet in de buffer passen.
Als u de tweede of derde SharedSection-waarde verlaagt, wordt het aantal bureaubladen verhoogd dat in de bijbehorende vensterstations kan worden gemaakt. Kleinere waarden beperken het aantal haken, menu's, tekenreeksen en vensters dat kan worden gemaakt op een bureaublad. Aan de andere kant, als u de tweede of derde SharedSection-waarde verhoogt, wordt het aantal bureaubladen dat kan worden gemaakt, verlaagd. Dit verhoogt echter ook het aantal haken, menu's, tekenreeksen en vensters dat kan worden gemaakt op een bureaublad.
Omdat de SCM een nieuw bureaublad maakt in het niet-interactieve vensterstation voor elk serviceproces dat wordt uitgevoerd onder een gebruikersaccount, vermindert een grotere derde SharedSection-waarde het aantal services voor gebruikersaccounts dat met succes op het systeem kan worden uitgevoerd. Het minimum dat kan worden opgegeven voor de tweede of derde SharedSection-waarde is 128. Elke poging om een kleinere waarde te gebruiken, gebruikt in plaats daarvan 128.
Desktop-heap wordt toegewezen door User32.dll wanneer een proces gebruikersobjecten nodig heeft. Als een toepassing niet afhankelijk is van User32.dll, zal de toepassing geen bureaubladheap verbruiken.
Opmerking
In Windows Server 2003 wordt de specifieke gebeurtenis vastgelegd in het systeemlogboek wanneer aan een van de volgende voorwaarden wordt voldaan:
Als de heap van het bureaublad vol wordt, wordt de volgende gebeurtenis geregistreerd:
Event Type: Warning Event Source: Win32k Event Category: None Event ID: 243 Date: Date Time: Time User: N/A Computer: ServerName Description: A desktop heap allocation failed.
In dit geval verhoogt u de bureaubladheapgrootte.
Als de totale desktop-heap de grootte van de systeembrede buffer wordt, wordt de volgende gebeurtenis vastgelegd:
Event Type: Warning Event Source: Win32k Event Category: None Event ID: 244 Date: Date Time: Time User: N/A Computer: ServerName Description: Failed to create a desktop due to desktop heap exhaustion.
Verklein in dit geval de heapgrootte van het bureaublad.
In Windows Server 2003 is een systeembrede buffer 20 MB wanneer aan een van de volgende voorwaarden wordt voldaan:
- U bevindt zich in een Terminal Services-omgeving.
- De schakeloptie /3 GB is opgegeven in het Boot.ini-bestand.
Van toepassing op:
- Microsoft Windows XP Professional
- Microsoft Windows XP Home Edition
- Windows Vista Ultimate
- Windows Vista Enterprise
- Windows Vista Business
- Windows Vista Home Premium
- Windows 7 Ultimate
- Windows 7 Enterprise
- Windows 7 Professional
- Windows 7 Home Premium
- Windows 8 Enterprise
- Windows 8 Pro, Windows 8
- Windows 8.1 Enterprise
- Windows 8.1 Pro
- Windows 8.1
- Microsoft Windows Server 2003 Datacenter Edition (32-bits x86)
- Microsoft Windows Server 2003 Datacenter x64 Edition
- Microsoft Windows Server 2003 Enterprise Edition (32-bits x86)
- Microsoft Windows Server 2003 Enterprise x64 Edition
- Microsoft Windows Server 2003 Standard Edition (32-bits x86)
- Microsoft Windows Server 2003 Standard x64 Edition
- Windows Server 2008 Datacenter
- Windows Server 2008 Enterprise
- Windows Server 2008 R2 Datacenter
- Windows Server 2008 R2 Enterprise
- Windows Server 2008 Standard
- Windows Server 2012 Datacenter
- Windows Server 2012 Standard
- Windows Server 2012 R2 Datacenter
- Windows Server 2012 R2 Standard