从32位进程打开%SystemRoot%\ system32\calc.exe重定向到另一个文件.哪个,为什么以及如何?

Jeh*_*joa 2 winapi winsxs wow64 createfile windows-7-x64

我目前正在用C++编写一些测试代码,这些代码使用PE文件来理解它的文件格式结构.我的项目设置为64位编译.在我的代码中,我打开%SystemRoot%\ system32\calc.exe并读取IMAGE_DOS_HEADER和IMAGE_NT_HEADERS结构.同时我使用十六进制编辑器插件在Notepad ++中打开了相同的calc.exe.我将我的代码读取的值与Notepad ++进行了比较,发现它们不同.我将calc.exe从System32复制到C:\ Temp\calc.exe,现在值匹配.

Notepad ++似乎是一个32位应用程序(尚未检查PE文件,但由于它默认安装到Program Files(x86),所以它似乎是一个安全的假设).

这个WinSxS在起作用吗?或者还有什么导致这个?哪个文件实际上被送到32位应用程序打开%SystemRoot%\ system32\calc.exe?

只是好奇.在此先感谢任何光线.

Pau*_*der 5

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

可以使用Wow64DisableWow64FsRedirection临时禁用此文件以访问该文件的64位版本

可以在File System Redirector中找到更多详细信息

  • 很容易记住:32 位的内容放在名称中带有 64 的位置,而 64 位的内容放在名称中带有 32 的位置。这怎么会让任何人感到困惑呢?;-) (2认同)