为什么在 64 位版本的 Windows 上会有 ac:\windows\syswow64\userinit.exe?

为什么在 64 位版本的 Windows 上会有 ac:\windows\syswow64\userinit.exe?

Windows 内部明确指出,在使用 lsass.exe 进行身份验证后,winlogon.exe 将启动 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?

答案1

出于同样的原因,几乎所有其他 Microsoft 二进制文件都有 SysWOW64 版本:与 32 位应用程序兼容。也许没有人会使用它,但一旦 Microsoft 停止分发 32 位版本的二进制文件(无论是 calc.exe 还是 ping.exe 或 Bubbles.scr),某些地方使用一些糟糕的旧 32 位应用程序的人就会抱怨。

答案2

那就是 32 位版本。信不信由你,SysWOW64 就是 32 位二进制文​​件所在的地方。WOW64 代表 Windows-on-windows64,即 32 位的东西在真正的64位系统之上。

C:\windows\system32 是 64 位二进制文​​件所在的位置,因为这是一条古老的路径,始终包含在每个人的路径中。我通过尝试强制 powershell 从 SysWOW64 而不是 System32 启动来解决这个问题,然后发现我的 64 位东西无法工作……

总结一下:

System32 = 64 位版本
SysWOW64 = 32 位版本

感谢微软!

相关内容