原文链接: http://www.greensoftcode.net/techntxt/2014315195331643021849

#include <Windows.h>
include <stdio.h>
#include <tchar.h>
#include <conio.h>

#include "stdafx.h"
#include "osVersion.h"
#include "osVersionDlg.h"

void getOsVersion(char* szOSName)
{
 DWORD  dwMajorVersion;
 DWORD   dwMinorVersion;
 DWORD  dwBuildNumber;
    DWORD  dwPlatformId;
 OSVERSIONINFO osvi;//定义OSVERSIONINFO数据结构对象
 memset(&osvi, 0, sizeof(OSVERSIONINFO));//开空间 
 osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);//定义大小 
 GetVersionEx (&osvi);//获得版本信息 
 dwMajorVersion=osvi.dwMajorVersion;//主版本号
 dwMinorVersion=osvi.dwMinorVersion;//副版本
 dwBuildNumber=osvi.dwBuildNumber;//创建号
 dwPlatformId=osvi.dwPlatformId;//ID号
 char swVersion[10]={0};    
 sprintf(swVersion,"%d.%d",dwMajorVersion,dwMinorVersion);
   // dwVesion=atoi(swVersion);  
 
     if (!strcmp(swVersion,"4.0"))   strcpy( szOSName,"win95");    //win95    
     if (!strcmp(swVersion,"4.1")) strcpy( szOSName,"win98");     //win98 
     if (!strcmp(swVersion,"4.9")) strcpy( szOSName,"win_me");     // win_me 
     if (!strcmp(swVersion,"3.51")) strcpy( szOSName,"win_Nt_3_5");  //win_Nt_3_5    
     if (!strcmp(swVersion,"5.0"))  strcpy( szOSName,"win2000");    //win2000   
  if (!strcmp(swVersion,"5.1"))   strcpy( szOSName,"win_xp");    //win_xp 
   if (!strcmp(swVersion,"5.2"))  strcpy( szOSName,"win2003");    // win2003 
     if (!strcmp(swVersion,"6.6"))   strcpy(szOSName,"vista");    //vista
  if (!strcmp(swVersion,"6.1"))   strcpy( szOSName,"win7");     // win7 
  if (!strcmp(swVersion,"6.1"))   strcpy( szOSName,"win8");      // win8

}

#define __in  
#define __out
 
#define MS_PROCESSOR_ARCHITECTURE_IA64             6
#define MS_PROCESSOR_ARCHITECTURE_AMD64          9
 
// 安全的取得真实系统信息
VOID SafeGetNativeSystemInfo(__out LPSYSTEM_INFO lpSystemInfo)
{
 if (NULL==lpSystemInfo) return;
 typedef VOID (WINAPI *LPFN_GetNativeSystemInfo)(LPSYSTEM_INFO lpSystemInfo);
 LPFN_GetNativeSystemInfo fnGetNativeSystemInfo = (LPFN_GetNativeSystemInfo)GetProcAddress( GetModuleHandle(_T("kernel32")), "GetNativeSystemInfo");;
 if (NULL != fnGetNativeSystemInfo)
 {
  fnGetNativeSystemInfo(lpSystemInfo);
 }
 else
 {
  GetSystemInfo(lpSystemInfo);
 }
}

// 获取操作系统位数
int GetSystemBits()
{
 SYSTEM_INFO si;
 SafeGetNativeSystemInfo(&si);
  if (si.wProcessorArchitecture == MS_PROCESSOR_ARCHITECTURE_AMD64 ||
    si.wProcessorArchitecture == MS_PROCESSOR_ARCHITECTURE_IA64 )
 
 {
  return 64;
 }
 return 32;
}

void COsVersionDlg::OnButton1() 
{
 // TODO: Add your control notification handler code here
 char szOSVersion[40]={0};
    getOsVersion(szOSVersion);  //获得操作系统名称
 
 int lzBit=GetSystemBits(); // 获取操作系统位数

}

VC获得window操作系统版本号, 获取操作系统位数的更多相关文章

  1. python开发_platform_获取操作系统详细信息工具

    ''' python中,platform模块给我们提供了很多方法去获取操作系统的信息 如: import platform platform.platform() #获取操作系统名称及版本号,'Win ...

  2. NTDLL未文档化函数RtlGetNtVersionNumbers获取操作系统版本

    作为新手,对获取操作系统版本号好奇过,因为曾经假象过一个场景:自己的程序在windows xp环境下编译,在windows 2003, windows 7,windows 8是否需要提权或者兼容处理, ...

  3. 获取操作系统版本Asp.Net

    /// <summary> /// 获取操作系统版本号 /// </summary> /// <returns></returns> public st ...

  4. 批量ssh登录,获取操作系统、CPU、内存、硬盘信息<shell>

    说明:该脚本读取machine.txt文件中的机器名,然后批量ssh登录,获取每台机器的操作系统,CPU,内存,硬盘等信息. 使用方法:将文件保存为sh,chmod +x filename 为该sh文 ...

  5. Js获取操作系统版本 && 获得浏览器版本

    //利用原生Js获取操作系统版本function getOS() { var sUserAgent = navigator.userAgent; var isWin = (navigator.plat ...

  6. C# 获取操作系统相关信息

    1.获取操作系统版本(PC,PDA均支持) Environment.OSVersion 2.获取应用程序当前目录(PC支持) Environment.CurrentDirectory 3.列举本地硬盘 ...

  7. 根据UserAgent 获取操作系统名称

    /// <summary>        /// 根据 User Agent 获取操作系统名称        /// </summary>        private sta ...

  8. .NET Core 获取操作系统各种信息

    .NET Core 获取操作系统各种信息 一.前言 .NET Core 内置了一些API供我们获取操作系统.运行时.框架等信息.这些API不是很常用,所有有些小伙伴可能还不知道,这里做一些可能用到的获 ...

  9. C# 获取操作系统相关的信息

    本文通过一个Demo,讲解如何通过C#获取操作系统相关的信息,如内存大小,CPU大小,机器名,环境变量等操作系统软件.硬件相关信息,仅供学习分享使用,如有不足之处,还请指正. 涉及知识点: Envir ...

随机推荐

  1. hdu 5326

    Work Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  2. git简单运用

    创建新仓库 创建新文件夹,打开,然后执行 git init 以创建新的 git 仓库. 检出仓库 执行如下命令以创建一个本地仓库的克隆版本: git clone /path/to/repository ...

  3. 移动立方体算法(Marching cubes algorithm)

    百度百科: 医学图像三维重建的方法主要有两大类:一类是三维面绘制,另一类是三维体绘制.体绘制能够更真实地反映物体结构,但由于其运算量大,即使利用高性能的计算机也无法满足实际应用中交互操作的需要.因此, ...

  4. [Node.js]22. Level 4: Dependency

    Add two dependencies to your package.json file, connect and underscore. You'll want to useconnect ve ...

  5. 拓展javascript内置函数

    1.获取字符串字节数 //获取字符串字节数 //方法一 /* */ String.prototype.getBytesLength = function () { var length = 0; fo ...

  6. UVA 357 Let Me Count The Ways(全然背包)

    UVA 357 Let Me Count The Ways(全然背包) http://uva.onlinejudge.org/index.php?option=com_onlinejudge& ...

  7. OpenWrt中wifidog的配置及各节点页面参数

    修改/etc/wifidog.conf, 只需要修改文件的前半部分, 其他都保持默认 GatewayID default GatewayInterface br-lan GatewayAddress ...

  8. Android网络开发之基本介绍

    Android平台浏览器采用WebKit引擎,名为ChormeLite,拥有强大扩展特性,每个开发者都可以编写自己的插件. 目前,Android平台有3种网络接口可以使用,分别是:java.net, ...

  9. 深入PHP内核之array_multisort

    这个函数是我第一次看手册的时候,没看明白是怎么回事,所以有必要记录一下 用法 bool array_multisort ( array &$arr [, mixed $arg = SORT_A ...

  10. maven仓库介绍 牛人博客

    http://juvenshun.iteye.com/blog/359256 查找jar包方法 http://juvenshun.iteye.com/blog/269094