GetVersionEx函数

Windows 发展还是非常快速的,从 Win95 ,到 Win98 ,再到 Win2000 XP 系统。每个系统的功能也有所不同,要想在程序里区别不同的系统,就需要获取系统的版本信息。比如 XP 里有防火墙,而其它以前的系统里没有带有的。但有时编写了一个服务器程序,或者编写 BT 程序,又需要设置一个端口对外面接收连接,因此在 XP 系统里就需要设置防火墙的端口,而在 XP 以前的系统里就没有必要设置端口了。这样的需求,就可以使用函数 GetVersionEx 来区分不同的系统。
 
函数 GetVersionEx 声明如下:
 
WINBASEAPI
BOOL
WINAPI
GetVersionExA(
    __inout LPOSVERSIONINFOA lpVersionInformation
    );
WINBASEAPI
BOOL
WINAPI
GetVersionExW(
    __inout LPOSVERSIONINFOW lpVersionInformation
    );
#ifdef UNICODE
#define GetVersionEx GetVersionExW
#else
#define GetVersionEx GetVersionExA
#endif // !UNICODE
 
lpVersionInformation 是返回系统版本的信息。
 
 
调用函数的例子如下:
#001 //
#002  // 获取当前登录用户的名称。
#003  //
#004  void GetWinVersion(void)
#005  {
#006         //
#007         OSVERSIONINFO osvi;
#008         osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
#009        
#010         // 获取系统的版本信息。
#011         ::GetVersionEx(&osvi);
#012         bool bIsWindowsXPorLater = (osvi.dwMajorVersion > 5) ||
#013               ( (osvi.dwMajorVersion == 5) && (osvi.dwMinorVersion >= 1) );
#014 
#015         // 显示当前的版本。
#016         if (bIsWindowsXPorLater)
#017         {
#018               OutputDebugString(_T("Windows XP 或更新版本 !/r/n"));
#019         }
#020         else
#021         {
#022               OutputDebugString(_T("Windows XP 以前版本 !/r/n"));              
#023         }        
#024  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Windows 8 和 Windows Server 2012 以及更高版本中,Microsoft 引入了 GetVersionEx 函数的替代品。新的函数名为 VerifyVersionInfo,它更加灵活,可以检查操作系统的版本、内部版本号、服务包级别、产品类型和系统架构等信息。这个函数可以用来代替 GetVersionEx 函数,但需要使用一些结构体和常量来指定要检查的操作系统版本信息。以下是一个示例代码: ```c++ #include <Windows.h> int main() { OSVERSIONINFOEX osvi; DWORDLONG dwlConditionMask = 0; int op = VER_GREATER_EQUAL; ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); osvi.dwMajorVersion = 10; osvi.dwMinorVersion = 0; osvi.wServicePackMajor = 0; osvi.wServicePackMinor = 0; osvi.wProductType = VER_NT_WORKSTATION; VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, op); VER_SET_CONDITION(dwlConditionMask, VER_MINORVERSION, op); VER_SET_CONDITION(dwlConditionMask, VER_SERVICEPACKMAJOR, op); VER_SET_CONDITION(dwlConditionMask, VER_SERVICEPACKMINOR, op); VER_SET_CONDITION(dwlConditionMask, VER_PRODUCT_TYPE, op); if (VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR | VER_PRODUCT_TYPE, dwlConditionMask)) printf("This is Windows 10\n"); else printf("This is not Windows 10\n"); return 0; } ``` 这个示例代码使用 VerifyVersionInfo 函数来检查操作系统是否为 Windows 10。它先设置了一个 OSVERSIONINFOEX 结构体,指定了要检查的版本信息。然后使用 VER_SET_CONDITION 宏设置条件掩码,指定了要检查哪些版本信息和比较操作符。最后调用 VerifyVersionInfo 函数,传入 OSVERSIONINFOEX 结构体、条件掩码和条件掩码的值,检查操作系统版本是否符合条件。 ### 回答2: 旧版本中的GetVersionEx函数已经从Windows 8.1开始被废弃。取而代之的是通过使用更现代的方式获取操作系统版本信息。以下是替代GetVersionEx的方法: 1. 使用函数IsWindowsVersionOrGreater IsWindowsVersionOrGreater是一个用于判断操作系统版本的函数,可以判断当前操作系统是否高于或等于指定版本。通过使用这个函数,您可以取代GetVersionEx函数来确定操作系统的版本。 2. 使用函数VerifyVersionInfo VerifyVersionInfo函数是另一个用于判断操作系统版本的函数,与IsWindowsVersionOrGreater函数类似,但它提供了更多的灵活性和控制能力。使用VerifyVersionInfo函数可以比较操作系统版本的多个属性,如主版本号、次版本号、构建号和服务包级别,以确定操作系统的版本。 3. 使用版本清单 Windows操作系统支持使用版本清单文件来指定应用程序兼容的操作系统版本。您可以在应用程序的清单文件中添加相关信息,以指定支持的最低操作系统版本,从而替代GetVersionEx函数。 以上方法中,IsWindowsVersionOrGreater和VerifyVersionInfo函数是最常用的替代方案。根据具体的需求,您可以选择适合自己的方法来获取操作系统的版本信息。请注意,这些方法可以提供更准确和灵活的版本信息,但也可能需要更多的代码和处理逻辑进行判断和处理。 ### 回答3: GetVersionEx 是一个过时的函数,它用于获取操作系统的版本信息。替代该函数的方法是使用不同的函数和API来获取相应的信息。 一种替代方法是使用 VerifyVersionInfo 函数。与 GetVersionEx 不同,VerifyVersionInfo 函数支持 Windows 8 及更高版本操作系统。该函数可以用于验证操作系统的版本和建设号,以判断当前系统是否满足要求。对于不同的操作系统版本,我们可以使用不同的判断方式。例如,通过判断系统是否为 Windows 10 可以使用 VER_MAJORVERSION 和 VER_MINORVERSION 属性,通过判断系统的建设号可以使用 VER_BUILDNUMBER 属性。 另一个替代方法是使用 GetVersionEx 函数的后续版本 - GetVersionExA 或 GetVersionExW。这两个函数与 GetVersionEx 稍有不同,它们可以带有特定标志来检索更详细的版本信息。但需要注意的是,从 Windows 8 开始,微软已将 GetVersionExA 和 GetVersionExW 函数标记为过时。 除了上面提到的方法,还有其他一些替代 GetVersionEx 函数的工具和API,比如 WMI (Windows Management Instrumentation)、RegGetValue 和 EnumDisplayDevices。这些工具和API提供了更灵活和精确的方式来获取操作系统的版本和其他系统信息。 综上所述,尽管 GetVersionEx 是一个过时的函数,但我们有很多替代方法和工具来获取操作系统的版本信息。我们可以根据具体的需求选择合适的方法来替代 GetVersionEx 函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值