微软为了确保32位程序能够顺利运行,通过重定向,32位程序访问system32目录的时候,会被重定向syswow64目录,这里面都是32位的dll, 让32位程序能够加载,如果32位程序直接访问system32目录,这里全是64位的dll ,是没有办法是用的。
在64的程序中访问system32是没有问题的,但是32位程序确实访问不到的,一直以为是我自己的库有问题,测试了半天,哪都没出错,但就是没有文件,很奇怪,查了一下,找到了上面的内容。
解决办法:
#ifndef _WIN64
PVOID OldValue = NULL;
Wow64DisableWow64FsRedirection(&OldValue);
#endif
//这里写你需要的代码
if(WriteBinarySourceToFile(MAKEINTRESOURCE(XXX), L"XXX", XXX)){
return FALSE;
}
#ifndef _WIN64
Wow64RevertWow64FsRedirection(&OldValue);
#endif
参考:
