Внутреннее устройство Windows дает понять, что winlogon.exe после аутентификации с помощью lsass.exe запускает содержимое ключа UserInit, который по умолчанию c: \ windows \ system32 \ userinit.exe для настройки среды, а затем запускает все, что указано в HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \ Shell который по умолчанию - explorer.exe, но почему существует версия userinit для wow64? (т.е. c: \ windows \ syswow64 \ userinit.exe) В частности, вопрос вращается вокруг того факта, что собственные двоичные файлы для staturp, lsass, winlogon и т.п. уже 64-разрядные и будут использовать 64-разрядную версию, так что нужна 32-битная версия userinit?
По той же причине есть версия 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!