`
thecloud
  • 浏览: 951404 次
文章分类
社区版块
存档分类
最新评论

得到当前操作系统的版本的

 
阅读更多

#include <windows.h>
#include <stdio.h>

#define BUFSIZE 80

int main()
{
OSVERSIONINFOEX osvi;
BOOL bOsVersionInfoEx;

// Try calling GetVersionEx using the OSVERSIONINFOEX structure.
// If that fails, try using the OSVERSIONINFO structure.

ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )
{
osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) )
return FALSE;
}

switch (osvi.dwPlatformId)
{
// Test for the Windows NT product family.
case VER_PLATFORM_WIN32_NT:

// Test for the specific product family.
if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2 )
printf ("Microsoft Windows Server 2003 family, ");

if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 )
printf ("Microsoft Windows XP ");

if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )
printf ("Microsoft Windows 2000 ");

if ( osvi.dwMajorVersion <= 4 )
printf("Microsoft Windows NT ");

// Test for specific product on Windows NT 4.0 SP6 and later.
if( bOsVersionInfoEx )
{
// Test for the workstation type.
if ( osvi.wProductType == VER_NT_WORKSTATION )
{
if( osvi.dwMajorVersion == 4 )
printf ( "Workstation 4.0 " );
else if( osvi.wSuiteMask & VER_SUITE_PERSONAL )
printf ( "Home Edition " );
else
printf ( "Professional " );
}

// Test for the server type.
else if ( osvi.wProductType == VER_NT_SERVER ||
osvi.wProductType == VER_NT_DOMAIN_CONTROLLER )
{
if( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2 )
{
if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
printf ( "Datacenter Edition " );
else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
printf ( "Enterprise Edition " );
else if ( osvi.wSuiteMask == VER_SUITE_BLADE )
printf ( "Web Edition " );
else
printf ( "Standard Edition " );
}

else if( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )
{
if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
printf ( "Datacenter Server " );
else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
printf ( "Advanced Server " );
else
printf ( "Server " );
}

else // Windows NT 4.0
{
if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
printf ("Server 4.0, Enterprise Edition " );
else
printf ( "Server 4.0 " );
}
}
}
else // Test for specific product on Windows NT 4.0 SP5 and earlier
{
HKEY hKey;
char szProductType[BUFSIZE];
DWORD dwBufLen=BUFSIZE;
LONG lRet;

lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
"SYSTEM//CurrentControlSet//Control//ProductOptions",
0, KEY_QUERY_VALUE, &hKey );
if( lRet != ERROR_SUCCESS )
return FALSE;

lRet = RegQueryValueEx( hKey, "ProductType", NULL, NULL,
(LPBYTE) szProductType, &dwBufLen);
if( (lRet != ERROR_SUCCESS) || (dwBufLen > BUFSIZE) )
return FALSE;

RegCloseKey( hKey );

if ( lstrcmpi( "WINNT", szProductType) == 0 )
printf( "Workstation " );
if ( lstrcmpi( "LANMANNT", szProductType) == 0 )
printf( "Server " );
if ( lstrcmpi( "SERVERNT", szProductType) == 0 )
printf( "Advanced Server " );

printf( "%d.%d ", osvi.dwMajorVersion, osvi.dwMinorVersion );
}

// Display service pack (if any) and build number.

if( osvi.dwMajorVersion == 4 &&
lstrcmpi( osvi.szCSDVersion, "Service Pack 6" ) == 0 )
{
HKEY hKey;
LONG lRet;

// Test for SP6 versus SP6a.
lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
"SOFTWARE//Microsoft//Windows NT//CurrentVersion//Hotfix//Q246009",
0, KEY_QUERY_VALUE, &hKey );
if( lRet == ERROR_SUCCESS )
printf( "Service Pack 6a (Build %d)/n", osvi.dwBuildNumber & 0xFFFF );
else // Windows NT 4.0 prior to SP6a
{
printf( "%s (Build %d)/n",
osvi.szCSDVersion,
osvi.dwBuildNumber & 0xFFFF);
}

RegCloseKey( hKey );
}
else // Windows NT 3.51 and earlier or Windows 2000 and later
{
printf( "%s (Build %d)/n",
osvi.szCSDVersion,
osvi.dwBuildNumber & 0xFFFF);
}


break;

// Test for the Windows 95 product family.
case VER_PLATFORM_WIN32_WINDOWS:

if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0)
{
printf ("Microsoft Windows 95 ");
if ( osvi.szCSDVersion[1] == 'C' || osvi.szCSDVersion[1] == 'B' )
printf("OSR2 " );
}

if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)
{
printf ("Microsoft Windows 98 ");
if ( osvi.szCSDVersion[1] == 'A' )
printf("SE " );
}

if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)
{
printf ("Microsoft Windows Millennium Edition/n");
}
break;

case VER_PLATFORM_WIN32s:

printf ("Microsoft Win32s/n");
break;
}
return TRUE;
}

分享到:
评论

相关推荐

    易语言取操作系统版本.zip

    "易语言取操作系统版本"这个主题主要涉及如何通过易语言获取运行时计算机的操作系统版本信息,这对于编写跨平台或者针对特定操作系统特性的程序来说是至关重要的。 在易语言中,获取操作系统版本通常涉及到以下几个...

    得到计算机操作系统版本信息,VB.NET源代码编写Environment.OSVersion.ToString

    在VB.NET编程环境中,获取计算机的操作系统版本信息是一项常见的任务,这对于开发跨平台或特定操作系统功能的应用程序至关重要。`Environment.OSVersion.ToString`是.NET Framework提供的一条内置方法,用于检索当前...

    JSP获取客户端IP地址浏览器版本操作系统.pdf

    // 操作系统版本号 System.getProperty("os.arch"); // 操作系统架构 ``` 总结 在JSP中,获取客户端的IP地址、浏览器版本和操作系统信息是非常重要的。我们可以使用`request.getRemoteAddr()`方法来获取客户端的...

    得到操作系统的版本

    **标题:** "获取操作系统版本的方法:深入解析GetWindowVer函数" **描述:** 在计算机编程和系统管理中,了解操作系统版本是至关重要的。它不仅有助于开发者针对特定的操作系统版本优化软件兼容性,也能帮助系统...

    显示当前操作系统信息

    在C++中,Visual C++(VC)提供了Windows API函数,如`GetVersionEx`,它可以获取操作系统版本信息。在代码中调用这个函数并解析返回的`OSVERSIONINFO`结构体,就能得到所需的版本号和创建号。如果压缩包中的文件名...

    C#获取当前操作系统版本

    在C#编程中,获取当前操作系统版本是常见的需求,这主要涉及到Windows API或者.NET Framework提供的类库。本文将深入探讨如何使用C#来获取这些信息,并分享一个实用的示例程序。 首先,我们需要了解.NET Framework...

    国产麒麟操作系统离线一键升级openssh版本以及相关文件

    标题中提到的“国产麒麟操作系统离线一键升级openssh版本以及相关文件”揭示了该文件内容的一个核心功能,即针对国产麒麟操作系统提供了一个离线升级openssh工具的方案。同时,该方案也可以支持到centos操作系统,...

    计算机操作系统.pdf

    多任务操作系统可以同时运行多个进程,并通过调度算法决定哪个进程获得CPU时间。 2. 内存管理:操作系统负责管理主内存,即RAM。它包括内存分配、回收以及防止内存泄漏等。内存管理技术如分页、分段和虚拟内存使得...

    VB获取操作系统版本信息程序示例

    在VB(Visual Basic)编程中,获取操作系统版本信息是一项常见的任务,这有助于开发人员根据不同的系统环境编写兼容性良好的应用程序。下面将详细讲解如何利用VB获取这些信息,并提供相关的源码示例。 首先,我们...

    《操作系统概念第六版翻译版》.pdf

    书籍的第六版在前几版的基础上进行了更新,融入了当前操作系统领域的最新研究成果和工业界的应用实践,使其内容更加贴近现代操作系统的发展现状,具有很高的学术价值和实用价值。 另外,《操作系统概念第六版翻译版...

    VB.NET获取Windows 7操作系统信息.rar

    VB.NET获取Windows 7操作系统信息,本程序获取的内容比较多,主要有:显示器分辨率、桌面文件夹路径、收藏夹路径、Application Data""路径"、Windows7当前登录的用户名、当前应用程序的路径、计算机IP和计算机全名、...

    94得到当前windows的版本号.rar_得到当前的

    这个名为"94得到当前windows的版本号.rar"的压缩包文件很可能包含了一个小程序或者脚本,用于帮助用户快速查询他们的Windows系统版本信息。在本文中,我们将深入探讨如何在Windows中获取版本号,并介绍相关知识。 ...

    C#如何检测操作系统版本

    本文实例为大家分享了C#检测操作系统版本的方法,供大家参考,具体内容如下 我们通过System.Environment.OSVersion.Version获得操作系统的版本号,然后再根据版本号进行判断操作系统是什么版本。 Version 类的属性 ...

    操作系统兼容性测试.doc

    对于大多数项目,由于不指定具体的操作系统版本,测试策略通常是首先对当前主流版本进行测试,如Windows 7和Windows 10。完成主流版本的兼容性测试后,再逐步扩展到非主流或较旧的操作系统,以实现全面的兼容性覆盖...

    计算机操作系统教材电子版

    《计算机操作系统教程》是由张尧学等人编著的教材,该书深入浅出地介绍了操作系统的基本原理,并特别强调了对Linux和Windows这两个主流操作系统的内核介绍,突出了学生对当前主流操作系统的了解。 书中主要内容涵盖...

    广工操作系统课程设计(银行家算法)

    在“广工操作系统课程设计(银行家算法)”这个项目中,我们主要关注的是操作系统领域的核心概念和一种经典的资源分配策略——银行家算法。银行家算法是为了解决操作系统的死锁预防问题而提出的,它确保了系统在面对...

    东北大学操作系统课程实验源码

    操作系统是计算机科学的基础课程之一,它管理并控制计算机硬件资源,为用户提供服务,实现软件与硬件之间的隔离。东北大学的操作系统课程实验旨在帮助学生深入理解操作系统的核心概念和工作原理,通过编写源码来实践...

    车载操作系统总体技术要求研究报告.pdf

    车载操作系统的技术现状分析了当前市场上的主要操作系统,比较了它们的技术特性,如QNX、Linux、Android等,并阐述了这些系统在实际应用中的表现。此外,报告还关注了信息安全技术的发展,强调了车载操作系统在保障...

    Linux操作系统下如何查看网卡当前版本

    在Linux操作系统中,了解硬件设备的状态,特别是网络接口卡(NIC)的驱动程序版本,对于系统维护和故障排查至关重要。本文将详细介绍如何在Linux环境下查看网卡的当前版本,特别是针对IBM服务器上常见的Intel和...

    Labview 实时获取CPU、内存、硬盘的使用率以及操作系统版本信息、开机持续时间

    Labview 实时获取CPU、内存、硬盘的使用率以及操作系统版本信息、开机持续时间,CPU使用率与任务管理器中一致。

Global site tag (gtag.js) - Google Analytics