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

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

 
阅读更多

#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;
}

分享到:
评论

相关推荐

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

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

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

    内容索引:VB源码,系统相关,系统信息 VB编程获取你电脑操作系统的版本号、操作系统名称、操作系统类别、补丁信息等,程序比较简单,在VB6下通过编译,运行后如图如示。

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

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

    主流操作系统分类.docx

    它问世于1985年,起初仅是MS-DOS之下的桌面环境,而后其后续版本逐渐发展成为个人电脑和服务器用户设计的操作系统,并最终获得了世界个人电脑操作系统软件的垄断地位。成为了最受欢迎的个人电脑操作系统,也是人们最...

    nodejs在linux安装教程-包涵判断当前版本是32位还是64位.pdf

    在Linux系统上安装Node.js需要先判断当前系统的版本,因为Node.js有32位和64位两种版本,需要选择与当前系统版本相匹配的安装包。该文件详细介绍了如何使用命令行工具来判断当前系统的版本,包括查看CPU信息、查看...

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

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

    《计算机操作系统教程》习题详解(第二版)

    如果没有中断,操作系统不能获得系统控制权,无法按调度算法对处机进行重新分配,一个程序将一直运行到结束而不会被打断。7. 说明“栈”和“堆”的差别. 答:栈是一块按后进先出(FIFO)规则访问的存储区域,用来...

    操作系统原语描述.docx

    操作系统原语描述全文共3页,当前为第1页。操作系统原语描述全文共3页,当前为第1页。1.创建进程原语Create() 操作系统原语描述全文共3页,当前为第1页。 操作系统原语描述全文共3页,当前为第1页。 参数说明:被...

    JAVA如何获取当前系统的request url.txt

    该代码是介绍JAVA获取当前系统的url,与大家分享,请大家下载!

    服务器操作系统介绍.docx

    服务器操作系统介绍全文共2页,当前为第1页。服务器操作系统介绍全文共2页,当前为第1页。服务器操作系统介绍 服务器操作系统介绍全文共2页,当前为第1页。 服务器操作系统介绍全文共2页,当前为第1页。 WINDOWS...

    linux操作系统培训资料.pptx

    linux操作系统即可以作为准实时的操作系统使用,也可作为非实时操作系统使用,并且可以满足服务器操作系统的要求,在桌面操作系统领域也得到较大的发展。 所以,linux操作系统已经渗透到嵌入式领域、服务器领域、...

    计算机基础操作系统.pptx

    第二章 操作系统 计算机基础操作系统全文共41页,当前为第1页。 本章学习目标 理解操作系统管理计算机 了解操作系统概念 掌握Windows 7基本操作 Windows 7基本设置 计算机基础操作系统全文共41页,当前为第2页。 2.1...

    西电计算机操作系统课程设计pintos-pro2.doc

    ----------------------- 西电计算机操作系统课程设计pintos-pro2全文共5页,当前为第1页。 西电计算机操作系统课程设计pintos-pro2全文共5页,当前为第2页。 西电计算机操作系统课程设计pintos-pro2全文共5页,...

    西电计算机操作系统课程设计pintos-pro3.doc

    ----------------------- 西电计算机操作系统课程设计pintos-pro3全文共6页,当前为第1页。 西电计算机操作系统课程设计pintos-pro3全文共6页,当前为第2页。 西电计算机操作系统课程设计pintos-pro3全文共6页,...

    网络操作系统安全概述(PPT-119页).pptx

    本章有三小节 2.1 常用的网络操作系统简介 2.2 操作系统安全与访问控制 2.3 网络操作系统的安全设置实例 网络操作系统安全概述(PPT-119页)全文共120页,当前为第2页。 2.1 常用的网络操作系统简介 目前较常用的网络...

    《计算机应用基础》操作系统一.docx

    《计算机应用基础》操作系统一 《计算机应用基础》操作系统一全文共22页,当前为第1页。《计算机应用基础》操作系统一全文共22页,当前为第1页。《计算机应用基础》操作系统一全文共22页,当前为第1页。《计算机应用...

    操作系统课程设计

    Linux操作系统是UNIX操作系统的一种克隆系统。它诞生于1991年10月5日。此后借助于Internet网络,经过全世界各地计算机爱好者的共同努力,现已成为当今世界上使用最多的一种UNIX类操作系统,并且使用人数还在迅猛增长...

    嵌入式实时操作系统.pptx

    嵌入式实时操作系统 嵌入式实时操作系统全文共36页,当前为第1页。 多任务实时操作系统 嵌入式实时操作系统全文共36页,当前为第2页。 前后台系统 前后台系统的组成:前台和后台程序 后台:是一个无限循环的应用程序...

    服务器操作系统有哪些-.docx

    服务器操作系统有哪些-全文共2页,当前为第1页。服务器操作系统有哪些-全文共2页,当前为第1页。服务器操作系统有哪些? 服务器操作系统有哪些-全文共2页,当前为第1页。 服务器操作系统有哪些-全文共2页,当前为第1...

    《计算机操作系统》期末复习指导

    操作系统的五大类型是批处理操作系统、分时操作系统、实时操作系统、网络操作系统、分布式操作系统。 多道程序设计:即在系统内(内存)同时存放并运行几道相互独立的程序。 多道程序设计的基础:是将...

Global site tag (gtag.js) - Google Analytics