Winapi 从32位进程打开%SystemRoot%\system32\calc.exe将重定向到另一个文件。哪个,为什么,如何? 我现在正在编写C++中的一些测试代码,这些代码会让PE文件混乱,从而了解它的文件格式结构。我的项目设置为编译为64位。在我的代码中,我打开%SystemRoot%\system32\calc.exe并读取IMAGE\u DOS\u头和IMAGE\u NT\u头结构。同时,我使用十六进制编辑器插件在记事本++中打开了相同的calc.exe。我将代码读取的值与Notepad++进行比较,发现它们不同。我将calc.exe从System32复制到C:\Temp\calc.exe,现在值匹配

Winapi 从32位进程打开%SystemRoot%\system32\calc.exe将重定向到另一个文件。哪个,为什么,如何? 我现在正在编写C++中的一些测试代码,这些代码会让PE文件混乱,从而了解它的文件格式结构。我的项目设置为编译为64位。在我的代码中,我打开%SystemRoot%\system32\calc.exe并读取IMAGE\u DOS\u头和IMAGE\u NT\u头结构。同时,我使用十六进制编辑器插件在记事本++中打开了相同的calc.exe。我将代码读取的值与Notepad++进行比较,发现它们不同。我将calc.exe从System32复制到C:\Temp\calc.exe,现在值匹配,winapi,windows-7-x64,createfile,wow64,winsxs,Winapi,Windows 7 X64,Createfile,Wow64,Winsxs,Notepad++似乎是一个32位的应用程序(尚未检查PE文件,但由于默认情况下它安装在程序文件(x86)中,因此这似乎是一个安全的假设) 这是WinSxS在工作吗?或者是什么导致了这一切?哪一个文件实际上被提供给打开%SystemRoot%\system32\calc.exe的32位应用程序 只是好奇。提前感谢您对这一点的介绍。如果我记得很清楚,当32位应用程序试图打开system32目录时,它会自动重定向到syswow64dir。是的,这是WOW重定向器。您将看到C:\Windows\Sys

Notepad++似乎是一个32位的应用程序(尚未检查PE文件,但由于默认情况下它安装在程序文件(x86)中,因此这似乎是一个安全的假设)

这是WinSxS在工作吗?或者是什么导致了这一切?哪一个文件实际上被提供给打开%SystemRoot%\system32\calc.exe的32位应用程序


只是好奇。提前感谢您对这一点的介绍。

如果我记得很清楚,当32位应用程序试图打开system32目录时,它会自动重定向到syswow64dir。

是的,这是WOW重定向器。您将看到C:\Windows\SysWOW64中也有一个calc.exe。这是使用%SystemRoot%\System32\calc.exe路径时打开的文件

可以暂时禁用此选项,以便使用访问64位版本的文件


有关更多详细信息,请访问

禁用WowFs重定向是不必要的,有时甚至不是一个选项(例如,当您试图让记事本++打开system32目录中的文件时)。您可以使用虚拟目录%windir%\Sysnative而不是%windir%\System32(您将无法在资源管理器中看到它,但可以在地址栏中键入它)


WOW64在三个dll中实现:WOW64.dll、wow64cpu.dll和wow64win.dll(以及32位NTDLL)。重定向(除其他外)是在wow64.dll中实现的,wow64cpu.dll中的CPU仿真/帮助程序,以及wow64win.dll包含到win32k.sys(负责windows GUI的内核模式驱动程序)的thunks。

+1但您的真正意思是“临时禁用以访问64位版本”;SysWOW64中的版本是32位版本。你知道,我不认为它是向后的。据我所知,32位版本仍然存在于System32中,并在SysWOW64中重定向到其64位版本。在重新阅读文档后,我发现你是完全正确的。很容易记住:32位的东西放在名称中有64位的地方,64位的东西放在名称中有32位的地方。这怎么能把人搞糊涂?!!;-)谢谢,就这样。我知道wow64的全部目的是在64位平台上无缝运行32位代码,但这似乎。。。邪恶。我想知道有多少人在64位系统上运行32位病毒扫描程序,并且确信他们的system32目录中没有病毒…@Jehjoa我想总共有0人在64位机器上运行32位病毒扫描程序。病毒扫描器的开发者不是白痴。他们不会在64位机器上安装32位扫描仪。更重要的是,病毒扫描器通常集成到内核中,因此,为了在64位系统上完成如此多的工作,必须是64位的。是的,WOW64有时会让人困惑,但一旦你学会了诀窍,你很快就会习惯。谢谢,你记得很清楚。:)投了赞成票,但我把保罗的回答作为答案,因为它更完整。@Jehjoa:谢谢你投赞成票,你是对的:另一个更完整!!:)