设为首页 加入收藏

TOP

VC/MFC 判断操作系统
2013-11-20 14:23:06 来源: 作者: 【 】 浏览:110
Tags:VC/MFC  判断 操作系统

  在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

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

  void XXX::GetSystem()

  {

  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))

  {

  AfxMessageBox(_T("系统版本为 Windows 2000"),MB_OK);

  }

  else if((i==5)&&(j==1))

  {

  AfxMessageBox(_T("系统版本为 Windows XP"),MB_OK);

  }

  else if((i==5)&&(j==2))

  {

  AfxMessageBox(_T("系统版本为 Windows 2003"),MB_OK);

  }

  else if((i==6)&&(j==0))

  {

  AfxMessageBox(_T("系统版本为 Windows Vista"),MB_OK);

  }

  else if((i==6)&&(j==1))

  {

  AfxMessageBox(_T("系统版本为 Win7"),MB_OK);

  }

  }

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇VC 连接数据库方法小结 下一篇2.3.3 变量的使用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: