如何以编程的方式确定当前安装的Windows版本?例如区分vista和xp。
BOOL IsAtLeast2008DC() {
OSVERSIONINFOEX osvi = {0};
DWORDLONG mask = 0;
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
osvi.dwMajorVersion = 6;
osvi.dwMinorVersion = 0;
osvi.wServicePackMajor = 0;
osvi.wServicePackMinor = 0;
osvi.wProductType = VER_NT_DOMAIN_CONTROLLER;
VER_SET_CONDITION(mask, VER_MAJORVERSION, VER_GREATER_EQUAL);
VER_SET_CONDITION(mask, VER_MINORVERSION, VER_GREATER_EQUAL);
VER_SET_CONDITION(mask, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
VER_SET_CONDITION(mask, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
VER_SET_CONDITION(mask, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
VER_SET_CONDITION(mask, VER_PRODUCT_TYPE, VER_EQUAL);
return VerifyVersionInfo(&osvi,
VER_MAJORVERSION | VER_MINORVERSION |
VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR |
VER_PRODUCT_TYPE,
mask
);
}
GetVersionEx
所回答的问题:“我正在运行哪个版本的Windows?”微软似乎不再希望我们问这个问题了。 :( - Jesse ChisholmGetVersionEx
的功能,我就无法轻松地完成这个任务。相反,我必须通过一系列“它至少是A吗?”“它至少是B吗?”来估计版本族。直到我找到答案改变的边界为止。这对我的需求来说并不是很令人满意。 - Jesse Chisholm
GetVersion
和GetVersionEx
已被弃用,取而代之的是VerifyVersionInfo
。在我看来,这是一个糟糕的改变。 - Jesse Chisholm