是否为 x64 的操作系统
bool Utility::IsWow64()
{
typedefBOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_ISWOW64PROCESSfnIsWow64Process;
BOOLbIsWow64 = FALSE;
fnIsWow64Process= (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandleA("kernel32"),"IsWow64Process");
if(NULL != fnIsWow64Process)
{
fnIsWow64Process(GetCurrentProcess(),&bIsWow64);
}
returnbIsWow64;
}
注册表的操作:
如果你访问 HKEY_LOCAL_MACHINE 主键下的 SOFTWARE 下的子键 在x64位下访问到的是 SOFTWARE\Wow6432Node
例如 : 在x32 下的注册表路径是HKEY_LOCAL_MACHINE\SOFTWARE\IISFilter
对应x64下的就是HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\IISFilter
如果你要在x64下访问HKEY_LOCAL_MACHINE\SOFTWARE\IISFilter操作注册表时加上 | KEY_WOW64_64KEY
CRegKey reg;
reg.Open(HKEY_LOCAL_MACHINE,_T("SOFTWARE\\IISFilter"),KEY_READ| KEY_WOW64_64KEY); //防止x64的系统