电脑系统判断函数

系统判断函数

不多讲,代码含注释

void whichxitong() {
typedef void(__stdcall*NTPROC)(DWORD*, DWORD*, DWORD*);
HINSTANCE hinst = LoadLibrary("ntdll.dll");
DWORD dwMajor, dwMinor, dwBuildNumber;
NTPROC proc = (NTPROC)GetProcAddress(hinst, "RtlGetNtVersionNumbers");
proc(&dwMajor, &dwMinor, &dwBuildNumber);
if (dwMajor == 10 && dwMinor == 0) { //win10
xt = 10;
} else if (dwMajor == 6 && dwMinor == 3) { //win8.1
xt = 8.1;
}
SYSTEM_INFO info;
GetSystemInfo(&info);
OSVERSIONINFOEX os;
os.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
if (GetVersionEx((OSVERSIONINFO *)&os)) {
switch (os.dwMajorVersion) {
case 4:
switch (os.dwMinorVersion) {
case 0:
if (os.dwPlatformId == VER_PLATFORM_WIN32_NT) { //NT 4.0
xt = 4;
} else if (os.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { //win95
xt = 95;
}
break;
case 10: //win98
xt = 98;
break;
case 90: //win Me
xt = 1000;
break;
}
break;
case 5:
switch (os.dwMinorVersion) {
case 0: //win2000
xt = 2000;
break;
case 1: //win XP
xt = 3000;
break;
case 2:
if (os.wProductType == VER_NT_WORKSTATION// &&
/* info.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AWD64*/) { //xin XPx64
xt = 3500;
} else if (GetSystemMetrics(SM_SERVERR2) == 0) { //win Server 2003
xt = 2003;
} else if (GetSystemMetrics(SM_SERVERR2) != 0) { //win Server 2003 R2
xt = 2004;
}
break;
}
break;
case 6:
switch (os.dwMinorVersion) {
case 1:
if (os.wProductType == VER_NT_WORKSTATION) { //win7
xt = 7;
} else { //win Server 2008 R2
xt = 2009;
}
break;
case 2:
if (os.wProductType == VER_NT_WORKSTATION) { //win8
xt = 8;
} else { //win Server 2012
xt = 2012;
}
break;
}
break;
default:
xt = -1;
}
} else {
xt = -1000;
}
}
posted @   HappyJaPhy  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示