La STDIN, STDOUT et les redirections de STDERR ne fonctionnent pas dans un processus enfant de WOW64 si la fonction CreateProcessWithTokenW crée le processus enfant

S’applique à : Windows Server 2008 for Itanium-Based SystemsWindows Server 2008 DatacenterWindows Server 2008 Enterprise

Symptômes


Considérez le scénario suivant :
  • Vous disposez d’un ordinateur qui exécute une version 64 bits de Windows Server 2008, Windows Vista, Windows 7 ou Windows Server 2008 R2.
  • Sur cet ordinateur, un processus appelle la fonction CreateProcessWithTokenW pour créer un processus enfant qui s’exécute sous Windows 32 bits sur Windows 64 bits (WOW64).
  • Le processus enfant WOW64 est créé pour rediriger l’entrée standard (STDIN), la sortie standard (STDOUT) et l’erreur standard (STDERR).
Dans ce scénario, les redirections ne fonctionnent pas dans le processus enfant WOW64. Par conséquent, les applications ou les services qui dépendent de la fonctionnalité de redirection ne fonctionnent pas.

Cause


Il existe deux blocs d’environnement processus (PEBs) pour chaque processus WOW64child. Un PEB est utilisé pour les processus 64 bits, et l’autre PEB est utilisé pour les processus 32 bits qui sont exécutent dans l’environnement d’émulation WOW64.

La fonction CreateProcessWithTokenW seulement duplique les poignées STDIN, STDOUT et STDERR à partir du processus parent pour le PEB pour les processus 64 bits. Toutefois, cette fonction n’existe pas déjà ces poignées pour le PEB pour les processus 32 bits qui s’exécutent dans l’environnement d’émulation WOW64. Ce comportement provoque le processus enfant qui s’exécute sous WOW64, à ne pas pouvoir utiliser les poignées redirigées. Par conséquent, les redirections d’échouent.

Résolution


Informations sur le correctif

Un correctif pris en charge est disponible auprès de Microsoft. Toutefois, ce correctif vise à corriger uniquement le problème décrit dans cet article. Appliquez ce correctif uniquement aux systèmes qui rencontrent le problème décrit dans cet article. Ce correctif va peut-être subir des tests supplémentaires. Par conséquent, si vous n'êtes pas sérieusement concerné par ce problème, nous vous recommandons d'attendre la prochaine mise à jour logicielle qui contiendra ce correctif.

Si le correctif est disponible pour le téléchargement, il existe une section « Téléchargement de correctif logiciel disponible » au début de cet article de la Base de connaissances. Si cette section n'apparaît pas, contactez le Service clientèle et Support de Microsoft pour obtenir le correctif.

Remarque Si des problèmes supplémentaires se produisent ou si des procédures de dépannage sont nécessaires, vous devrez peut-être formuler une demande de service distincte. Les coûts habituels du support technique s'appliqueront aux questions et problèmes qui ne relèvent pas de ce correctif logiciel. Pour une liste complète des numéros de téléphone du Service clientèle et support technique de Microsoft ou pour créer une demande de service distincte, visitez le site Web de Microsoft à l'adresse suivante :Remarque Le formulaire « Téléchargement de correctif logiciel disponible » affiche les langues pour lesquelles le correctif est disponible. Si vous ne voyez pas votre langue, c'est parce qu'il n'y a pas de correctif disponible pour cette langue.

Conditions préalables

Pour appliquer ce correctif logiciel, votre ordinateur doit exécuter l’un des systèmes d’exploitation suivants :
  • Windows Vista Service Pack 1 (SP1)
  • Windows Vista Service Pack 2 (SP2)
  • Windows Server 2008
  • Windows Server 2008 Service Pack 2 (SP2)
  • Windows 7
  • Windows Server 2008 R2

Nécessite un redémarrage

Vous devez redémarrer l'ordinateur après avoir appliqué ce correctif.

Informations concernant le Registre

Vous ne disposez pas d’apporter de modification au Registre.

Informations sur les fichiers

La version anglaise (États-Unis) de ce correctif logiciel installe des fichiers dont les attributs sont répertoriés dans les tableaux ci-dessous. Les dates et heures de ces fichiers sont répertoriées en temps universel coordonné (UTC). Les dates et heures de ces fichiers sur votre ordinateur local sont affichées dans votre heure locale en tenant compte de l'heure d'été (DST). En outre, les dates et heures peuvent changer lorsque vous effectuez certaines opérations sur les fichiers.
Remarques sur les fichiers Windows Vista et Windows Server 2008
Important Les correctifs logiciels Windows Vista et Windows Server 2008 sont inclus dans les mêmes packages. Cependant, seul « Windows Vista » est répertorié sur la page demande de correctif logiciel. Pour demander le package de correctif qui s’applique à un ou deux systèmes d’exploitation, sélectionnez le correctif logiciel qui est répertorié sous « Windows Vista » sur la page. Reportez-vous toujours à la section « S’applique à » dans les articles pour déterminer le système d’exploitation actif auquel s’applique chaque correctif.
  • Les fichiers qui s'appliquent à un produit spécifique, SR_Level (RTM, SPn), et à une branche de service (LDR, GDR), peuvent être identifiés en examinant les numéros de version de fichier comme indiqués dans le tableau suivant :
    Version francaiseProduitSR_LevelDossier
    6.0.600
    1.
    22 xxx
    Windows Vista et Windows Server 2008SP1LDR
    6.0.600
    2.
    22 xxx
    Windows Vista et Windows Server 2008SP2LDR
  • Service Pack 1 est intégré dans la version finale de Windows Server 2008.
  • Les fichiers MANIFEST (.manifest) et MUM (.mum) qui sont installés pour chaque environnement sont répertoriés séparément dans la section « Informations pour Windows Server 2008 et Windows Vista des fichiers supplémentaires ». Les fichiers MUM et les fichiers manifeste et les fichiers de catalogue (.cat) sécurité associées, sont extrêmement importants pour conserver l’état des composants mis à jour. Les fichiers de catalogue de sécurité, pour lesquels les attributs ne sont pas répertoriés, sont signés avec une signature numérique Microsoft.
Pour toutes les versions prises en charge x64-de Windows Server 2008 et Windows Vista
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Seclogon.dll6.0.6001.2243129,18412-May-200916:06x64
Seclogon.dll6.0.6002.2213429,18412-May-200915:41x64
Pour toutes les versions Itanium de Windows Server 2008 prises en charge
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Seclogon.dll6.0.6001.2243157,85612-May-200915:46IA-64
Seclogon.dll6.0.6002.2213457,85612-May-200915:33IA-64
Remarques sur les fichiers Windows 7 et Windows Server 2008 R2
Important Les correctifs logiciels Windows 7 et Windows Server 2008 R2 sont inclus dans les mêmes packages. Toutefois, les correctifs dans la page de demande de correctif logiciel sont répertoriés sous les deux systèmes d’exploitation. Pour demander le package de correctif qui s’applique à un ou deux systèmes d’exploitation, sélectionnez le correctif logiciel qui est répertorié sous « Windows 7/Windows Server 2008 R2 » sur la page. Reportez-vous toujours à la section « S’applique à » dans les articles pour déterminer le système d’exploitation actif auquel s’applique chaque correctif.
  • Les fichiers MANIFEST (.manifest) et MUM (.mum) qui sont installés pour chaque environnement sont répertoriés séparément dans la section « informations sur les fichiers supplémentaires pour Windows Server 2008 R2 et Windows 7 ». Les fichiers MUM et MANIFEST et les fichiers de catalogue de sécurité (.cat) associés sont extrêmement importants pour conserver l'état des composants mis à jour. Les fichiers de catalogue de sécurité, pour lesquels les attributs ne sont pas répertoriés, sont signés avec une signature numérique Microsoft.
Pour toutes les versions 64 bits de Windows 7 et Windows Server 2008 R2
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Seclogon.dll6.1.7600.2078730,72021-Aug-201007:24x64
Pour toutes les versions IA-64 prises en charge de Windows Server 2008 R2
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Seclogon.dll6.1.7600.2078765,02421-Aug-201006:29IA-64

Solution de contournement


Pour contourner ce problème, appelez la fonction CreateProcessAsUser pour créer un processus enfant.

État


Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».

Plus d'informations


Pour plus d’informations sur la fonction CreateProcessWithTokenW , visitez le site Web de Microsoft à l’adresse suivante :Pour plus d’informations sur la fonction CreateProcessAsUser , visitez le site Web de Microsoft à l’adresse suivante :Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :

Description 824684 terminologie standard utilisée pour décrire les mises à jour logicielles de Microsoft


Informations sur les fichiers supplémentaires

Informations sur les fichiers supplémentaires pour Windows Vista et Windows Server 2008

Fichiers supplémentaires pour toutes les versions x64 de Windows Vista et Windows Server 2008 prises en charge
Nom de fichierAmd64_4a7908b357eecad45497e7a614da5ab2_31bf3856ad364e35_6.0.6001.22431_none_eff62086a34ac976.manifest
Version de fichierNe s'applique pas
Taille du fichier713
Date (UTC)13-May-2009
Heure (UTC)03:32
PlateformeNe s'applique pas
Nom de fichierAmd64_e18aeae085cca5f39361c0ace1ecfedf_31bf3856ad364e35_6.0.6002.22134_none_c800fbe0d1aafeca.manifest
Version de fichierNe s'applique pas
Taille du fichier713
Date (UTC)13-May-2009
Heure (UTC)03:32
PlateformeNe s'applique pas
Nom de fichierAmd64_microsoft-windows-secondarylogonservice_31bf3856ad364e35_6.0.6001.22431_none_48ed2db26d293c6b.manifest
Version de fichierNe s'applique pas
Taille du fichier7,582
Date (UTC)12-May-2009
Heure (UTC)19:30
PlateformeNe s'applique pas
Nom de fichierAmd64_microsoft-windows-secondarylogonservice_31bf3856ad364e35_6.0.6002.22134_none_4ad6a0786a4cdd94.manifest
Version de fichierNe s'applique pas
Taille du fichier7,582
Date (UTC)12-May-2009
Heure (UTC)19:25
PlateformeNe s'applique pas
Nom de fichierUpdate.mum
Version de fichierNe s'applique pas
Taille du fichier2,598
Date (UTC)13-May-2009
Heure (UTC)03:32
PlateformeNe s'applique pas
Fichiers supplémentaires pour toutes les versions basés sur IA-64 prises en charge de Windows Server 2008
Nom de fichierIa64_23caceaa3d7286a9ff4a23775ef4da54_31bf3856ad364e35_6.0.6002.22134_none_d01b4e8816bf0190.manifest
Version de fichierNe s'applique pas
Taille du fichier711
Date (UTC)13-May-2009
Heure (UTC)03:32
PlateformeNe s'applique pas
Nom de fichierIa64_68069bedf1d5a4bd9f3dc637561ff507_31bf3856ad364e35_6.0.6001.22431_none_349d44d96d664fea.manifest
Version de fichierNe s'applique pas
Taille du fichier711
Date (UTC)13-May-2009
Heure (UTC)03:32
PlateformeNe s'applique pas
Nom de fichierIa64_microsoft-windows-secondarylogonservice_31bf3856ad364e35_6.0.6001.22431_none_ecd03624b4c9d431.manifest
Version de fichierNe s'applique pas
Taille du fichier7,572
Date (UTC)12-May-2009
Heure (UTC)19:14
PlateformeNe s'applique pas
Nom de fichierIa64_microsoft-windows-secondarylogonservice_31bf3856ad364e35_6.0.6002.22134_none_eeb9a8eab1ed755a.manifest
Version de fichierNe s'applique pas
Taille du fichier7,572
Date (UTC)12-May-2009
Heure (UTC)19:07
PlateformeNe s'applique pas
Nom de fichierUpdate.mum
Version de fichierNe s'applique pas
Taille du fichier1,924
Date (UTC)13-May-2009
Heure (UTC)03:32
PlateformeNe s'applique pas

Informations sur les fichiers supplémentaires pour Windows 7 et Windows Server 2008 R2

Fichiers supplémentaires pour toutes les versions 64 bits prises en charge de Windows 7 et Windows Server 2008 R2
Nom de fichierAmd64_445df96a83014fe57068b08a79da6683_31bf3856ad364e35_6.1.7600.20787_none_20591bc8c261086c.manifest
Version de fichierNe s'applique pas
Taille du fichier713
Date (UTC)21-Aug-2010
Heure (UTC)12:03
PlateformeNe s'applique pas
Nom de fichierAmd64_microsoft-windows-secondarylogonservice_31bf3856ad364e35_6.1.7600.20787_none_48e4f3e3ce639760.manifest
Version de fichierNe s'applique pas
Taille du fichier4,810
Date (UTC)21-Aug-2010
Heure (UTC)08:37
PlateformeNe s'applique pas
Nom de fichierUpdate.mum
Version de fichierNe s'applique pas
Taille du fichier1,886
Date (UTC)21-Aug-2010
Heure (UTC)12:03
PlateformeNe s'applique pas
Fichiers supplémentaires pour toutes les versions de Windows Server 2008 R2 basées sur IA-64 prises en charge
Nom de fichierIa64_a48ab9ecdf2f4b1206e2ae93b7bb6a43_31bf3856ad364e35_6.1.7600.20787_none_172788f1fbdb93a7.manifest
Version de fichierNe s'applique pas
Taille du fichier711
Date (UTC)21-Aug-2010
Heure (UTC)12:03
PlateformeNe s'applique pas
Nom de fichierIa64_microsoft-windows-secondarylogonservice_31bf3856ad364e35_6.1.7600.20787_none_ecc7fc5616042f26.manifest
Version de fichierNe s'applique pas
Taille du fichier4,808
Date (UTC)21-Aug-2010
Heure (UTC)08:17
PlateformeNe s'applique pas
Nom de fichierUpdate.mum
Version de fichierNe s'applique pas
Taille du fichier1,684
Date (UTC)21-Aug-2010
Heure (UTC)12:03
PlateformeNe s'applique pas