Почему a c:\windows\syswow64\userinit.exe в 64-разрядных версиях Windows?

Внутренние компоненты Windows проясняют, что winlogon.exe после аутентификации с помощью lsass.exe запускает содержимое ключа UserInit (по умолчанию это c:\windows\system32\userinit.exe для настройки среды, а затем запускает все, что указано в HKLM). \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \Microsoft\Windows NT\CurrentVersion\Winlogon\Shell, которая по умолчанию является explorer.exe, но почему существует версия userinit для wow64? (например, c:\windows\syswow64\userinit.exe) В частности, вопрос заключается в том, что собственные двоичные файлы для staturp, lsass,winlogon и т. д. уже являются 64-битными и будут использовать 64-битную версию, так что нужна 32-битная версия userinit?

2 ответа

Решение

По той же причине есть версия SysWOW64 практически всех остальных двоичных файлов Microsoft: совместимость с 32-битными приложениями. Возможно, никто никогда не будет его использовать, но как только Microsoft прекратит распространение 32-битной версии двоичного файла, будь то calc.exe или ping.exe или Bubbles.scr, кто-нибудь где-нибудь, используя какое-то дрянное старое 32-битное приложение, будет жаловаться.

Это была бы 32-битная версия. Верьте или нет, SysWOW64 - это то место, где находятся 32-битные двоичные файлы. WOW64 расшифровывается как Windows-on-windows64, то есть 32-битный продукт, который можно использовать поверх настоящей 64-битной системы.

C: \ windows \ system32 - это место, где находятся 64-битные двоичные файлы, просто потому, что это старый путь, который всегда был включен в путь каждого. Я понял это, пытаясь принудительно запустить powershell из SysWOW64 вместо System32, а затем обнаружил, что мои 64-битные компоненты не будут работать...

Итак, в итоге:

System32 = 64-битные версии
SysWOW64 = 32-битные версии

Спасибо Microsoft!

Другие вопросы по тегам