64位系統檔案 重定向問題(遍歷system32目錄檔案問題)
阿新 • • 發佈:2019-02-16
檔案重定向
檔案系統存在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);
}
}