获取Windows系统版本信息

1. 获取WINDOWS版本:-- PEB结构

在PEB结构中存放着操作系统版本信息的函数,
ULONG OSMajorVersion; // A4h 偏移地址a4h显示操作系统主版本号
ULONG OSMinorVersion; // A8h 偏移地址a8h显示操作系统子版本号
通过读取OSMajorVersion和OSMinorVersion的数据能够确定操作系统的版本。
FS段寄存器指向当前的TEB结构,在TEB偏移0x30处是PEB指针,通过这个指针可以取得存放在PEB中的信息。
不同的操作系统,版本信息的存放的位置是不同的,其中
2000  0X0500   
XP      0X0501
2003  0X0502
VISTA 0X0600
Win7  0X0601

Win8  0X0602

根据上述信息我们可以通过不调用API函数来获取操作系统的版本信息。

    int a=0,b=0,i=0,j=0;
    _asm
    {
        pushad
        mov ebx,fs:[0x18] ; get self pointer from TEB
        mov eax,fs:[0x30] ; get pointer to PEB / database
        mov ebx,[eax+0A8h] ; get OSMinorVersion
        mov eax,[eax+0A4h] ; get OSMajorVersion
        mov j,ebx
        mov i,eax
        popad
    }

    if((i==5)&&(j==0))
    {
        printf("系统版本为 Windows 2000\n"));
    }
    else if((i==5)&&(j==1))
    { 
        printf("系统版本为 Windows XP\n"));
    }
    else if((i==5)&&(j==2))
    {
        printf("系统版本为 Windows 2003\n"));
    }
    else if((i==6)&&(j==0))
    {
        printf("系统版本为 Windows vista\n"));
    }
    else if((i==6)&&(j==1))
    {
        printf("系统版本为 Win7\n"));
    }

   else if((i==6)&&(j==2))
    {
        printf("系统版本为 Win8\n"));
    }

2. 通过Windows系统API获取:

CString sRC;
 OSVERSIONINFO versionInfo;
 versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
 if(!::GetVersionEx(&versionInfo))
 {
  sRC = "";
  return sRC;
 }
 sRC = "Microsoft Windows ";
 switch(versionInfo.dwPlatformId)
 {
 case VER_PLATFORM_WIN32_WINDOWS:
  if(versionInfo.dwMinorVersion >= 0 && versionInfo.dwMinorVersion <= 9 )
  {
   sRC += "95";
  }
  else if(versionInfo.dwMinorVersion >= 10 && versionInfo.dwMinorVersion <= 89 )
  {
   sRC += "98";
  }
  else if(versionInfo.dwMinorVersion == 90 )
  {
   sRC += "Me";
  }
  break;
 case VER_PLATFORM_WIN32_NT:
  if(versionInfo.dwMajorVersion == 4)
  {
   
  }
  else if(versionInfo.dwMajorVersion == 5)
  {
   switch(versionInfo.dwMinorVersion)
   {
   case 0:
    sRC += "2000";
    break;
   case 1:
    sRC += "XP";
    break;
   case 2:
    sRC += "2003";
    break;
   }
   
  }
  else if(versionInfo.dwMajorVersion == 6)
  {
   
   switch(versionInfo.dwMinorVersion)
   {
   case 0:
    sRC += "Vista";
    break;
   case 1:
    sRC += "Win7";
    break;
   case 2:
    sRC += "Win8";
    break;
   }
   
  }
  break;
 default:
  break;
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值