1. 程式人生 > >64位系統檔案 重定向問題(遍歷system32目錄檔案問題)

64位系統檔案 重定向問題(遍歷system32目錄檔案問題)

檔案重定向

檔案系統存在2個獨立的部分

(1)32位程式對%systemroot%/system32 的操作存在重定向

32位檔案會被重定向到%systemroot%/SysWOW64

(2)64位程式對檔案操作不存在重定向

(3)補充

%systemroot%/SysWOW64下的都為32位程式,在裡面可以找到32位的cmd、calc

關閉重定向即可!!

eg:

BOOL IsWow64()
{
typedef BOOL (WINAPI* LPFN_ISWOW64PROCESS)(HANDLE, PBOOL);
LPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(_T("kernel32")), "IsWow64Process");
BOOL bIsWow64 = FALSE;
if (NULL != fnIsWow64Process)
{
fnIsWow64Process(GetCurrentProcess(), &bIsWow64);
}


return bIsWow64;

}

if (IsWow64()) //關閉64位系統重定向
{
PVOID OldValue = NULL;
BOOL bRet = ::Wow64DisableWow64FsRedirection (&OldValue);


if (bRet == TRUE) 
{
//do  something
// Restore the previous WOW64 file system redirection value.


::Wow64RevertWow64FsRedirection (OldValue);
}
}