Windows内部清除winlogon.exe与lsass.exe进行身份validation后,将启动UserInit项的内容(默认为c:\ windows \ system32 \ userinit.exe)来设置环境,然后启动任何在HKLM中指定的内容\ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \ Shell默认情况下是explorer.exe,但为什么有一个WOW64版本的userinit? (即c:\ windows \ syswow64 \ userinit.exe)具体来说,这个问题是围绕这样一个事实,即staturp,lsass,winlogon等的本地二进制文件已经是64位,将使用64位版本,那么什么是需要一个32位版本的userinit?
出于同样的原因,几乎所有其他Microsoft二进制文件都有一个SysWOW64版本:兼容32位应用程序。 也许没有人会使用它,但一旦微软停止发布二进制文件的32位版本,无论是calc.exe或ping.exe或Bubbles.scr,某人,某处,使用一些蹩脚的旧32位应用程序,会抱怨。
这将是32位版本。 相信与否,SysWOW64是32位二进制文件的地方。 WOW64代表Windows-on-windows64,也就是32位可以在真正的64位系统之上的东西。
C:\ windows \ system32是64位二进制文件所在的地方,因为那是一直包含在每个人的path中的古老path。 我想通过试图强制powershell从SysWOW64而不是System32启动,然后发现我的64位的东西不会工作…
总之:
System32 = 64位版本
SysWOW64 = 32位版本
谢谢微软!