#include <Windows.h>
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_ISWOW64PROCESS fnIsWow64Process;
BOOL IsWow64()
{
BOOL bIsWow64 = FALSE;
//IsWow64Process is not available on all supported versions of Windows.
//Use GetModuleHandle to get a handle to the DLL that contains the function
//and GetProcAddress to get a pointer to the function if available.
fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(GetModuleHandle(TEXT("kernel32")),"IsWow64Process");
if(NULL != fnIsWow64Process)
{
if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
{
//handle error
}
}
return bIsWow64;
}
int _tmain(int argc, _TCHAR* argv[])
{
HKEY var;
wchar_t dir[] = L"testtest";
REGSAM rs;
if (IsWow64())
{
rs = KEY_ALL_ACCESS | KEY_WOW64_64KEY;
}
else
{
rs = KEY_ALL_ACCESS;
}
if (RegCreateKeyEx(HKEY_LOCAL_MACHINE,L"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,0,REG_OPTION_NON_VOLATILE,rs,0,& var,0) != ERROR_SUCCESS)
{
MessageBox(0,L"RegCreateKeyEx 失败",0,0);
}
RegDisableReflectionKey(var);//这个函数也会返回失败。
if (RegSetValueEx(var,L"dp-ips",0,REG_SZ,(const BYTE *)dir,lstrlen(dir) * sizeof (wchar_t)) != ERROR_SUCCESS)
{
MessageBox(0,L"RegSetValueEx 失败",0,0);
}
RegEnableReflectionKey(var);//这个函数也会返回失败。
if (RegCloseKey(var) != ERROR_SUCCESS)
{
MessageBox(0,L"RegCloseKey 失败",0,0);
}
return 0;
}
/*
更通用的是如下代码:
__inline bool Is32BitProcessRunningOnWow64()
{
#ifdef _WIN64
// 64-bit code, obviously not running in a 32-bit process
return false;
#else
BOOL fWow64Process;
return IsWow64Process(GetCurrentProcess(), &fWow64Process) && IfWow64Process;
#endif
}
扩展资料:
Registry Redirector:
http://msdn.microsoft.com/en-us/library/aa384232(v=vs.85).aspx
Example of Registry Redirection on WOW64 (Windows)
http://msdn.microsoft.com/en-us/library/windows/desktop/aa384182(v=vs.85).aspx
Registry Redirector 的函数:
RegEnableReflectionKey
RegDisableReflectionKey
File System Redirector (Windows) http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx
Wow64DisableWow64FsRedirection http://msdn.microsoft.com/en-us/library/aa365743(VS.85).aspx
Wow64EnableWow64FsRedirection
Wow64RevertWow64FsRedirection
估计这是32位的程序运行在64为系统下出现的问题,64位的程序运行在64位的系统应该不会出现这问题。
2013.03.03
*/
2013年3月3日星期日
x64_Redirector.cpp
订阅:
博文评论 (Atom)
没有评论:
发表评论