User32.dll ou Kernel32.dll ne parvient pas à initialiser

Traductions disponibles Traductions disponibles
Numéro d'article: 184802 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Symptômes

Parfois une application est exécutée en CreateProcess() soit CreateProcessAsUser() échoue et vous recevoir l'un des messages d'erreur suivants :
L'initialisation de la bibliothèque dynamique \system32\user32.dll <system>a échoué. Le processus est terminé anormalement.
L'initialisation de la bibliothèque dynamique <system>\system32\kernel32.dll a échoué. Le processus est terminé anormalement.
Le processus ayant échoué renvoie le code de sortie 128 ou
ERROR_WAIT_NO_CHILDREN

Cause

L'échec est dû à une des opérations suivantes :
  1. Le processus exécuté n'a pas d'accès de sécurité appropriées à la station Windows et le Bureau associés au processus.
  2. Le système a plus assez de segments de bureau.

Plus d'informations

Cause 1

Le processus exécuté n'a pas d'accès de sécurité appropriées à la station Windows et le Bureau associés au processus.

Le membre lpDesktop de la structure STARTUPINFO transmis à CreateProcess() ou CreateProcessAsUser() spécifie quel poste de fenêtre et bureau est associé à la procédure exécutée. Le processus exécuté doit avoir accès de sécurité appropriées à la station de fenêtre spécifié et le bureau.

Pour plus d'informations sur la résolution des problèmes de sécurité avec des stations window et les postes de travail, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
165194CreateProcessAsUser() windowstations et les postes de travail

Cause 2

Le système a plus assez de segments de bureau.

Chaque objet Bureau sur le système dispose d'un segment de bureau lui est associé. L'objet Bureau utilise le segment de mémoire pour stocker les menus, les hooks, les chaînes et les fenêtres. Le système alloue des segments de bureau à partir d'un buffer de 48 Mo à l'échelle du système. En plus de segments de bureautiques, imprimante et pilotes de la police également utilisent cette mémoire tampon.

Postes de travail sont associés à des stations window. Une station Windows peut contenir zéro ou plusieurs postes de travail. La taille de segment de bureau alloué à un ordinateur de bureau associée à une station Windows peut être modifiée dans la valeur de Registre suivante.

Remarque Microsoft ne recommande pas utiliser le commutateur/3 GB. Le commutateur/3 GB est spécifié dans le fichier boot.ini.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Windows
Les données par défaut pour cette valeur de Registre devrait ressembler à celui-ci (sur une seule ligne):
   %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
				
les valeurs numériques suivant «SharedSection = "contrôle comment bureau segment de mémoire est allouée. Ces valeurs SharedSection sont spécifiées en kilo-octets. Il existe des paramètres distincts pour les ordinateurs de bureau associés stations window interactif et non interactif.

Remarque Si les valeurs SharedSection dans le Registre sont modifiées, le système doit être redémarré avant que les modifications prennent effet.

Important Cette section, la méthode ou la tâche contient vous explique comment modifier le Registre. Toutefois, des problèmes graves peuvent se produire si vous modifiez le Registre de façon incorrecte. Par conséquent, assurez-vous que vous procédez comme suit. Pour une meilleure protection, sauvegardez le Registre avant de le modifier. Ensuite, vous pouvez restaurer le Registre en cas de problème. Pour plus d'informations sur la façon de sauvegarder et restaurer le Registre, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
322756Comment faire pour sauvegarder et restaurer le Registre de Windows


La première valeur SharedSection (1024) est la taille du segment de mémoire partagée commune à tous les postes de travail. Cela inclut la table handle global, qui contient des handles vers fenêtres, menus, icônes, curseurs et ainsi de suite et paramètres système partagé. Il est peu probable que vous devrez jamais modifier cette valeur.

La deuxième valeur SharedSection (3072) est la taille de segment de bureau pour chaque poste de travail est associé à la station de fenêtre "interactif" WinSta0. Objets utilisateur tels que crochets, des menus, des chaînes et fenêtres consomment de la mémoire dans ce segment de bureau. Il est peu probable que vous devrez jamais modifier cette valeur SharedSection deuxième.

Chaque poste de travail est créé dans la station Windows interactive utilise le segment de bureau de 3072 Ko par défaut. Par défaut, il existe trois postes de travail créés dans Winsta0 par le système :
  • Winlogon
  • Par défaut - l'application bureau sera utilisé par tous les processus pour lesquels «Winsta0\default» est spécifié dans le membre de structure STARTUPINFO.lpDesktop "default". Lorsque le membre de structure lpDesktop est NULL, le processus parent est hérité du poste de fenêtre et du bureau. Tous les services sont exécutés sous le compte LocalSystem avec l'option de démarrage Autoriser Service à interagir avec Bureau sélectionnée utilise «Winsta0\Default». Ces processus partagent le même segment de bureau associé avec le bureau application "Default".
  • Économiseur d'écran - bureau économiseur d'écran est créé dans la station Windows interactive (WinSta0) lorsqu'un écran de veille s'affiche.
La troisième valeur SharedSection (512) est la taille de segment de bureau pour chaque poste de travail est associé à une station Windows «non interactif». Si cette valeur n'est pas présente, la taille du tas du bureau pour les stations de fenêtre non interactif sera identique à la taille spécifiée pour les stations Windows interactive (la deuxième valeur SharedSection).

Si seules deux valeurs SharedSection sont présents, vous pouvez ajouter «, 512 "en tant que la troisième valeur pour spécifier la taille du tas du bureau pour postes de travail créés dans des stations window non interactif.

Chaque processus de service exécuté sous un compte d'utilisateur reçoit un nouveau poste de travail dans une station Windows non interactive créée par le Gestionnaire de contrôle des services (SCM). Par conséquent, chaque service exécuté sous un compte d'utilisateur consommera le nombre de kilo-octets de segments de bureau spécifié dans la troisième valeur SharedSection. Tous les services exécutés sous le compte LocalSystem avec Autoriser Service à interagir avec le bureau partage pas sélectionné le segment de bureau du bureau "Default" dans la station de fenêtres de service non interactif (service-0 x 0-3e7 $).

Le segment de bureau total utilisé dans les stations de fenêtre interactif et non interactif doit tenir dans la mémoire tampon à l'échelle du système 48 Mo.

Les valeurs SharedSection deuxième ou troisième décroissantes augmentera le nombre de postes de travail qui peuvent être créés dans les gares de fenêtre correspondante. Les valeurs faibles va limiter le nombre de hooks, les menus, les chaînes et les fenêtres qui peuvent être créés au sein d'un ordinateur de bureau. D'autre part, augmenter les valeurs SharedSection deuxième ou troisième diminue le nombre de postes de travail qui peuvent être créés, mais augmente le nombre de raccordements, menus, chaînes et les fenêtres qui peuvent être créés au sein d'un ordinateur de bureau.

Étant donné que le SCM crée un nouveau poste de travail dans la station Windows non interactive pour chaque processus de service s'exécutant sous un compte d'utilisateur, une valeur plus grande bureau pour la troisième valeur SharedSection réduira le nombre de services de compte utilisateur qui peuvent s'exécuter avec succès sur le système. La valeur minimale qui peut être spécifiée pour la valeur de SharedSection deuxième ou troisième est 128. Toute tentative d'utilisation d'une valeur inférieure par défaut à 128.

Segment de bureau est allouée par user32.dll lorsqu'un processus est besoin d'objets utilisateur. Si une application n'est pas dépendante de User32.dll, il ne consommera pas les segments de bureau.

Remarque Dans Windows Server 2003, l'événement est enregistré dans le journal des événements système lorsque l'une des conditions suivantes est remplie :
  • Si le segment de bureau est plein, l'événement suivant est enregistré :

    Le type d'événement : avertissement
    Source de l'événement : Win32k
    Catégorie d'événement : aucun
    ID d'événement : 243
    Date : Date
    Durée : Time
    Utilisateur: n/A
    Ordinateur : ServerName
    Description : Une allocation de segment de bureau a échoué.

    Dans ce cas, augmentez la taille de segment de bureau.
  • Si le total du noyau de bureau devient la taille de la mémoire tampon à l'échelle du système, l'événement suivant est enregistré :

    Le type d'événement : avertissement
    Source de l'événement : Win32k
    Catégorie d'événement : aucun
    ID d'événement : 244
    Date : Date
    Durée : Time
    Utilisateur: n/A
    Ordinateur : ServerName
    Description : Échec de la création d'un ordinateur de bureau en raison d'épuisement du noyau de bureau.

    Dans ce cas, réduire la taille de segment de bureau.
Dans Windows Server 2003, une mémoire tampon à l'échelle du système est de 20 Mo lorsque l'une des conditions suivantes est remplie :
  • Vous êtes dans un environnement de Services Terminal Server.
  • Le commutateur/3 GB est spécifié dans le fichier Boot.ini.

Propriétés

Numéro d'article: 184802 - Dernière mise à jour: mardi 26 février 2008 - Version: 11.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Win32 Application Programming Interface sur le système suivant
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows 2000
    • Microsoft Windows XP Professional
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
Mots-clés : 
kbmt kbdll kbkernbase kbprb kbsecurity KB184802 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 184802
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com