STDIN, STDOUT и STDERR перенаправления не работают в дочерний процесс WOW64, если функция CreateProcessWithTokenW создает дочерний процесс

Симптомы

Рассмотрим следующий сценарий:

  • У вас есть компьютер под управлением 64-разрядной версии Windows Server 2008, Windows Vista, Windows 7 или Windows Server 2008 R2.

  • На этом компьютере процесс вызывает функцию CreateProcessWithTokenW , чтобы создать дочерний процесс, который работает в 32-разрядной на Windows 64-разрядной (подсистеме WOW64).

  • Перенаправление стандартного ввода (STDIN), стандартного вывода (STDOUT) и стандартный файл ошибок (STDERR) создается дочерний процесс WOW64.

В этом случае перенаправление не работают в дочерний процесс WOW64. Таким образом не работают приложения или службы, которые зависят от функции перенаправления.

Причина

Существуют два процесса среды блока (PEBs) для каждого процесса WOW64child. Один PEB используется для 64-разрядных процессов и других PEB используется для 32-разрядных процессов, выполняющихся в среде WOW64 эмуляции.

Функция CreateProcessWithTokenW только дублирует дескрипторы STDIN, STDOUT и STDERR из родительского процесса в PEB для 64-разрядных процессов. Тем не менее эта функция не дублировать эти маркеры, чтобы PEB для 32-разрядных процессов, выполняющихся в среде WOW64 эмуляции. Это приводит к возникновению дочерний процесс, который выполняется в эмуляторе WOW64, смогут использовать перенаправленные маркеры. Таким образом не перенаправления.

Решение

Сведения об исправлении

Существует исправление от корпорации Майкрософт. Однако данное исправление предназначено для устранения проблемы, описанной в этой статье. Применяйте это исправление только в тех случаях, когда наблюдается проблема, описанная в данной статье. Это исправление может проходить дополнительное тестирование. Таким образом если вы не подвержены серьезно этой проблеме, рекомендуется дождаться следующего пакета обновления, содержащего это исправление.

Если исправление доступно для скачивания, имеется раздел "Пакет исправлений доступен для скачивания" в верхней части этой статьи базы знаний. Если этот раздел не отображается, обратитесь в службу поддержки для получения исправления.

Примечание. Если наблюдаются другие проблемы или необходимо устранить неполадки, вам может понадобиться создать отдельный запрос на обслуживание. Стандартная оплата за поддержку будет взиматься только за дополнительные вопросы и проблемы, которые не соответствуют требованиям конкретного исправления. Чтобы получить полный список телефонов поддержки и обслуживания клиентов корпорации Майкрософт или создать отдельный запрос на обслуживание, посетите следующий веб-сайт корпорации Майкрософт:

Примечание. В форме "Пакет исправлений доступен для скачивания" отображаются языки, для которых доступно исправление. Если нужный язык не отображается, значит исправление для данного языка отсутствует.

Предварительные условия

Данное исправление на компьютере должна быть установлена одна из следующих операционных систем:

  • Пакет обновления 1 (SP1) для Windows Vista

  • Windows Vista с пакетом обновления 2 (SP2)

  • Windows Server 2008

  • Windows Server 2008 с пакетом обновления 2 (SP2)

  • Windows 7

  • Windows Server 2008 R2

Необходимость перезагрузки

После установки исправления компьютер необходимо перезагрузить.

Сведения о реестре

Нет необходимости вносить изменения в реестр.

Сведения о файлах

Английский (США) версия данного исправления устанавливает файлы с атрибутами, указанными в приведенных ниже таблицах. Дата и время для файлов указаны в формате UTC. Дата и время для файлов на локальном компьютере отображаются в местном времени с вашим текущим смещением летнего времени (DST). Кроме того, при выполнении определенных операций с файлами, даты и время могут изменяться.

Примечания к сведениям о файле Windows Vista и Windows Server 2008

Важно. Исправления для Windows Server 2008 и Windows Vista исправления включены в те же пакеты. Однако только «Windows Vista» отображается на странице запрос исправления. Для получения пакета исправлений, который применяется к одной или обеих операционных систем, установите исправления, перечисленные в разделе «Windows Vista» на странице. Всегда смотрите раздел "Информация в данной статье относится к следующим продуктам" статьи для определения фактических операционных систем, к которым применяется каждое исправление.

  • Файлы, относящиеся к определенному продукту, этапу разработки (RTM, SPn) и направлению поддержки (LDR, GDR) можно определить путем проверки номера версий файлов, как показано в следующей таблице.

  • 1 Пакет обновления интегрируется в окончательной версии Windows Server 2008.

  • Файлы MANIFEST (.manifest) и MUM (.mum), устанавливаемые для каждой среды, указаны отдельно в разделе "Сведения о дополнительных файлах для системы Windows Vista и Windows Server 2008". MUM файлы и файлы МАНИФЕСТА и связанные файлы каталога безопасности (.cat), очень важны для поддержания состояния обновленные компоненты. Файлы каталога безопасности, для которых не перечислены атрибуты, подписаны цифровой подписью корпорации Майкрософт.

Нужна дополнительная помощь?

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединение к программе предварительной оценки Майкрософт

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×