如果是代码调用次数少的情况下可以获得系统版本然后判断,我这里调用了上百万次就使用条件编译更好一些。
//WIN7 64 主版本号6 副版本号1
RTL_OSVERSIONINFOEXW OSVersion = { 0 };
OSVersion.dwOSVersionInfoSize = sizeof(RTL_OSVERSIONINFOEXW);
RtlGetVersion((PRTL_OSVERSIONINFOW)&OSVersion);
DbgPrint("系统主版本号:%x 系统副版本号:%x\n", OSVersion.dwMajorVersion, OSVersion.dwMinorVersion);
//WIN7 主版本是6
if (OSVersion.dwMajorVersion==6)
{
#define _WIN7_X64_RUN
}
//WIN10 主版本是10
else if (OSVersion.dwMajorVersion == 10)
{
#define _WIN10_X64_RUN
}
//不支持其他系统
else
{
return;
}
#ifdef _WIN10_X64_RUN
//如果是WIN 10 运行这里面的代码
do_something
#endif
#ifdef _WIN7_X64_RUN
//如果是WIN 7 运行这里面的代码
do_something
#endif
#endif
}