Проблема
Рассмотрим следующий сценарий.
- На вашем компьютере установлена 64-разрядная версия Windows Server 2008, Windows Vista, Windows 7 или Windows Server 2008 R2.
- На этом компьютере какой-либо процесс вызывает функцию CreateProcessWithTokenW для создания дочернего процесса, который выполняется под управлением 32-разрядной версии Windows в 64-разрядной версии Windows (WOW64).
- Дочерний процесс WOW64 создается для перенаправления стандартного ввода (STDIN), стандартного вывода (STDOUT) и стандартной ошибки (STDERR).
В этом случае перенаправления не работают в дочернем процессе WOW64. Поэтому все приложения и службы, зависящие от функции перенаправления, не работают.
Причина
Для каждого процесса WOW64child есть два блока среды процесса (PEB). Один PEB используется для 64-битных процессов, а другой — для 32-битных процессов, выполняемых в среде эмуляции WOW64.
Функция CreateProcessWithTokenW дублирует дескрипторы для STDIN, STDOUT и STDERR только из родительского процесса в PEB для 64-разрядных процессов. Однако эта функция не дублирует эти дескрипторы в PEB для 32-битных процессов, выполняемых в среде эмуляции WOW64. Это поведение приводит к тому, что дочерний процесс, выполняемый под WOW64, не может использовать перенаправленные дескрипторы. Поэтому перенаправления завершаются ошибкой.
Решение
Сведения об исправлениях
Поддерживаемое исправление доступно от корпорации Майкрософт. Однако это исправление предназначено только для устранения проблемы, описанной в этой статье. Применяйте это исправление только к системам, в которых возникает проблема, описанная в этой статье. Это исправление может пройти дополнительное тестирование. Поэтому, если вы не серьезно затронуты этой проблемой, мы рекомендуем вам дождаться следующего обновления программного обеспечения, содержащего это исправление.
Если исправление доступно для скачивания, в верхней части этой статьи базы знаний отобразится раздел "Доступно скачивание исправлений". Если этот раздел не отображается, обратитесь в службу поддержки пользователей Майкрософт для получения исправления.
Примечание Если возникнут дополнительные проблемы или потребуется их устранение, может потребоваться создать отдельный запрос на обслуживание. Обычные расходы на поддержку будут применяться для решения дополнительных вопросов поддержки и проблем, не подпадающих под это исправление. Полный список телефонных номеров службы поддержки и обслуживания клиентов Майкрософт или создание отдельного запроса на обслуживание см. на веб-сайте корпорации Майкрософт по следующему адресу:
http://support.microsoft.com/contactus/?ws=support Примечание. В форме "Доступно скачивание исправления" указаны языки, для которых доступно исправление. Если вы не видите свой язык, это означает, что для него недоступно исправление.
Необходимые условия
Чтобы применить это исправление, на компьютере должна быть установлена одна из следующих операционных систем:
- Windows Vista с пакетом обновления 1 (SP1)
- Пакет обновления 2 (SP2) для Windows Vista
- Windows Server 2008
- Windows Server 2008 с пакетом обновления 2 (SP2)
- Windows 7
- Windows Server 2008 R2
Необходимость перезапуска
После применения этого исправления компьютер необходимо перезагрузить.
Данные реестра
Вносить изменения в реестр не требуется.
Сведения о файлах
Версия этого исправления на английском языке (США) устанавливает файлы с атрибутами, которые перечислены в таблице ниже. Значения даты и времени для этих файлов указаны в формате UTC. Значения даты и времени для этих файлов на локальном компьютере отображаются в местном времени с учетом поправки на летнее время (DST). Кроме того, при выполнении определенных операций с файлами значения даты и времени могут изменяться.
Примечания о сведениях о файлах Windows Vista и Windows Server 2008
Важные исправления для Windows Vista и для Windows Server 2008 включены в один и тот же пакет. Однако на странице запроса на исправление указана только "Windows Vista". Чтобы запросить пакет исправлений, применимый к одной или обеим операционным системам, выберите исправление, указанное в разделе «Windows Vista» на странице. Всегда обращайтесь к разделу "Применимо к" в статьях, чтобы определить фактическую операционную систему, к которой применяется каждое исправление.
Файлы, относящиеся к определенному продукту, SR_Level (RTM, SPn) и ветви обслуживания (LDR, GDR), можно определить, изучив номера версий файлов, показанные в следующей таблице.
Версия Продукт SR_Level Ветвь службы 6.0.600
1.
22хWindows Vista и Windows Server 2008 Пакет обновления 1 (SP1) ЛДР 6.0.600
2.
22хWindows Vista и Windows Server 2008 Пакет обновления 2 (SP2) ЛДР Пакет обновления 1 (SP1) встроен в версию выпуска Windows Server 2008.
Файлы MANIFEST (.manifest) и MUM-файлы (.mum), устанавливаемые для каждой среды, перечислены отдельно в разделе "Дополнительные сведения о файлах для Windows Server 2008 и для Windows Vista". MUM-файлы и файлы MANIFEST, а также связанные с ними файлы каталога безопасности (CAT) чрезвычайно важны для поддержания состояния обновленных компонентов. Файлы каталога безопасности, для которых атрибуты не указаны, подписаны цифровой подписью Майкрософт.
Для всех поддерживаемых 64-разрядных (x64) версий Windows Server 2008 и Windows Vista
| Имя файла | Версия файла | Размер файла | Дата | Время | Платформа |
|---|---|---|---|---|---|
| Seclogon.dll | 6.0.6001.22431 | 29 184 | 12 мая 2009 г. | 16:06 | x64 |
| Seclogon.dll | 6.0.6002.22134 | 29 184 | 12 мая 2009 г. | 15:41 | x64 |
Для всех поддерживаемых версий Windows Server 2008 на основе Itanium
| Имя файла | Версия файла | Размер файла | Дата | Время | Платформа |
|---|---|---|---|---|---|
| Seclogon.dll | 6.0.6001.22431 | 57 856 | 12 мая 2009 г. | 15:46 | ИА-64 |
| Seclogon.dll | 6.0.6002.22134 | 57 856 | 12 мая 2009 г. | 15:33 | ИА-64 |
Сведения о файлах Windows 7 и Windows Server 2008 R2
Важные исправления для Windows 7 и для Windows Server 2008 R2 включены в те же пакеты. Однако исправления на странице запроса на исправление перечислены для обеих операционных систем. Чтобы запросить пакет исправлений, относящийся к одной или обеим операционным системам, выберите исправление, указанное в разделе "Windows 7/Windows Server 2008 R2" на этой странице. Всегда обращайтесь к разделу "Применимо к" в статьях, чтобы определить фактическую операционную систему, к которой применяется каждое исправление.
- Файлы MANIFEST (.manifest) и MUM-файлы (.mum), устанавливаемые для каждой среды, перечислены отдельно в разделе "Дополнительные сведения о файлах для Windows Server 2008 R2 и для Windows 7". Файлы MUM и MANIFEST, а также связанные с ними файлы каталога безопасности (CAT) чрезвычайно важны для поддержания состояния обновленных компонентов. Файлы каталога безопасности, для которых атрибуты не указаны, подписаны цифровой подписью Майкрософт.
Для всех поддерживаемых 64-разрядных (x64) версий Windows 7 и Windows Server 2008 R2
| Имя файла | Версия файла | Размер файла | Дата | Время | Платформа |
|---|---|---|---|---|---|
| Seclogon.dll | 6.1.7600.20787 | 30 720 | 21 августа 2010 г. | 07:24 | x64 |
Для всех поддерживаемых версий Windows Server 2008 R2 на основе IA-64
| Имя файла | Версия файла | Размер файла | Дата | Время | Платформа |
|---|---|---|---|---|---|
| Seclogon.dll | 6.1.7600.20787 | 65 024 | 21 августа 2010 г. | 06:29 | ИА-64 |
Временное решение
Чтобы обойти эту проблему, вызовите функцию CreateProcessAsUser для создания дочернего процесса.
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Дополнительные сведения
Дополнительные сведения о функции CreateProcessWithTokenW см. на веб-сайте корпорации Майкрософт по следующему адресу:
http://msdn.microsoft.com/en-us/library/ms682434(VS.85).aspx Дополнительные сведения о функции CreateProcessAsUser см. на веб-сайте корпорации Майкрософт по следующему адресу:
http://msdn.microsoft.com/en-us/library/ms682429(VS.85).aspx Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:
824684 Стандартные термины, используемые при описании обновлений программного обеспечения Майкрософт
Дополнительные сведения о файле
Дополнительные сведения о файлах для Windows Vista и Windows Server 2008
Дополнительные файлы для всех поддерживаемых 64-разрядных версий Windows Vista и Windows Server 2008
| Имя файла | Amd64_4a7908b357eecad45497e7a614da5ab2_31bf3856ad364e35_6.0.6001.22431_none_eff62086a34ac976.manifest |
|---|---|
| Версия файла | Неприменимо |
| Размер файла | 713 |
| Дата (в формате UTC) | 13 мая 2009 г. |
| Время (в формате UTC) | 03:32 |
| Платформа | Неприменимо |
| Имя файла | Amd64_e18aeae085cca5f39361c0ace1ecfedf_31bf3856ad364e35_6.0.6002.22134_none_c800fbe0d1aafeca.manifest |
| Версия файла | Неприменимо |
| Размер файла | 713 |
| Дата (в формате UTC) | 13 мая 2009 г. |
| Время (в формате UTC) | 03:32 |
| Платформа | Неприменимо |
| Имя файла | Amd64_microsoft-windows-secondarylogonservice_31bf3856ad364e35_6.0.6001.22431_none_48ed2db26d293c6b.manifest |
| Версия файла | Неприменимо |
| Размер файла | 7,582 |
| Дата (в формате UTC) | 12 мая 2009 г. |
| Время (в формате UTC) | 19:30 |
| Платформа | Неприменимо |
| Имя файла | Amd64_microsoft-windows-secondarylogonservice_31bf3856ad364e35_6.0.6002.22134_none_4ad6a0786a4cdd94.manifest |
| Версия файла | Неприменимо |
| Размер файла | 7,582 |
| Дата (в формате UTC) | 12 мая 2009 г. |
| Время (в формате UTC) | 19:25 |
| Платформа | Неприменимо |
| Имя файла | Update.mum |
| Версия файла | Неприменимо |
| Размер файла | 2,598 |
| Дата (в формате UTC) | 13 мая 2009 г. |
| Время (в формате UTC) | 03:32 |
| Платформа | Неприменимо |
Дополнительные файлы для всех поддерживаемых версий Windows Server 2008 на основе IA-64
| Имя файла | Ia64_23caceaa3d7286a9ff4a23775ef4da54_31bf3856ad364e35_6.0.6002.22134_none_d01b4e8816bf0190.manifest |
|---|---|
| Версия файла | Неприменимо |
| Размер файла | 711 |
| Дата (в формате UTC) | 13 мая 2009 г. |
| Время (в формате UTC) | 03:32 |
| Платформа | Неприменимо |
| Имя файла | Ia64_68069bedf1d5a4bd9f3dc637561ff507_31bf3856ad364e35_6.0.6001.22431_none_349d44d96d664fea.manifest |
| Версия файла | Неприменимо |
| Размер файла | 711 |
| Дата (в формате UTC) | 13 мая 2009 г. |
| Время (в формате UTC) | 03:32 |
| Платформа | Неприменимо |
| Имя файла | Ia64_microsoft-windows-secondarylogonservice_31bf3856ad364e35_6.0.6001.22431_none_ecd03624b4c9d431.manifest |
| Версия файла | Неприменимо |
| Размер файла | 7,572 |
| Дата (в формате UTC) | 12 мая 2009 г. |
| Время (в формате UTC) | 19:14 |
| Платформа | Неприменимо |
| Имя файла | Ia64_microsoft-windows-secondarylogonservice_31bf3856ad364e35_6.0.6002.22134_none_eeb9a8eab1ed755a.manifest |
| Версия файла | Неприменимо |
| Размер файла | 7,572 |
| Дата (в формате UTC) | 12 мая 2009 г. |
| Время (в формате UTC) | 19:07 |
| Платформа | Неприменимо |
| Имя файла | Update.mum |
| Версия файла | Неприменимо |
| Размер файла | 1,924 |
| Дата (в формате UTC) | 13 мая 2009 г. |
| Время (в формате UTC) | 03:32 |
| Платформа | Неприменимо |
Дополнительные сведения о файлах для Windows 7 и Windows Server 2008 R2
Дополнительные файлы для всех поддерживаемых 64-разрядных версий Windows 7 и Windows Server 2008 R2
| Имя файла | Amd64_445df96a83014fe57068b08a79da6683_31bf3856ad364e35_6.1.7600.20787_none_20591bc8c261086c.manifest |
|---|---|
| Версия файла | Неприменимо |
| Размер файла | 713 |
| Дата (в формате UTC) | 21 августа 2010 г. |
| Время (в формате UTC) | 12:03 |
| Платформа | Неприменимо |
| Имя файла | Amd64_microsoft-windows-secondarylogonservice_31bf3856ad364e35_6.1.7600.20787_none_48e4f3e3ce639760.manifest |
| Версия файла | Неприменимо |
| Размер файла | 4,810 |
| Дата (в формате UTC) | 21 августа 2010 г. |
| Время (в формате UTC) | 08:37 |
| Платформа | Неприменимо |
| Имя файла | Update.mum |
| Версия файла | Неприменимо |
| Размер файла | 1,886 |
| Дата (в формате UTC) | 21 августа 2010 г. |
| Время (в формате UTC) | 12:03 |
| Платформа | Неприменимо |
Дополнительные файлы для всех поддерживаемых версий Windows Server 2008 R2 на основе IA-64
| Имя файла | Ia64_a48ab9ecdf2f4b1206e2ae93b7bb6a43_31bf3856ad364e35_6.1.7600.20787_none_172788f1fbdb93a7.manifest |
|---|---|
| Версия файла | Неприменимо |
| Размер файла | 711 |
| Дата (в формате UTC) | 21 августа 2010 г. |
| Время (в формате UTC) | 12:03 |
| Платформа | Неприменимо |
| Имя файла | Ia64_microsoft-windows-secondarylogonservice_31bf3856ad364e35_6.1.7600.20787_none_ecc7fc5616042f26.manifest |
| Версия файла | Неприменимо |
| Размер файла | 4,808 |
| Дата (в формате UTC) | 21 августа 2010 г. |
| Время (в формате UTC) | 08:17 |
| Платформа | Неприменимо |
| Имя файла | Update.mum |
| Версия файла | Неприменимо |
| Размер файла | 1,684 |
| Дата (в формате UTC) | 21 августа 2010 г. |
| Время (в формате UTC) | 12:03 |
| Платформа | Неприменимо |