原文链接: 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. activity 保存数据

    activity 保存数据对android的商业项目十分的重要,譬如你在发微博的时候,突然来了一个电话,你洋洋洒洒写了100个字,你不能保存的话,你岂不要卖要骂娘. 那activity究竟是保存数据的 ...

  2. 机器学习的开源平台 TensorFlow

    一. google第二代人工智能机器学习开源工具. http://www.tensorfly.cn/ 二. 知乎上关于机器学习的资料问答 https://www.zhihu.com/question/ ...

  3. [Backbone]5. Model & View, toggle between Models and Views -- 2

    Dr. Goodparts is pretty flaky and has been cancelling a lot of appointments lately. He's asked for a ...

  4. nyoj-659-推断三角形(大坑)

    推断三角形 时间限制:1000 ms  |  内存限制:65535 KB 难度: 描写叙述 小明非常喜欢研究三角形.如今,小明已经知道三角形的三条边.假设三条边能组成三角形,小明就会非常高兴,他就会得 ...

  5. 【pyhon】理想论坛爬虫1.05版,将读取和写DB分离成两个文件

    下午再接再厉仿照Nodejs版的理想帖子爬虫把Python版的也改造了下,但美中不足的是完成任务的线程数量似乎停滞在100个左右,让人郁闷.原因还待查. 先把代码贴出来吧,也算个阶段性成果. 爬虫代码 ...

  6. iOS 怎样更新APP

    app更新的流程思想 得到当前版本currentVersion,将currentVersion与近期的版本latestVersion进行比較,若当前currentVersion较小.进行更新操作. 获 ...

  7. Java 基本概念

    1.JVM -- java virtual machine JVM就是我们常说的java虚拟机,它是整个java实现跨平台的 最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类 ...

  8. STL - 容器 - Array

    Array是C++ 11给STL新增加的容器 ArrayTest.cpp #include <array> #include <algorithm> #include < ...

  9. Setsockopt选项

    讨论 Setsockopt选项 http://c.chinaitlab.com/cc/ccjq/200806/752042_3.html 总而言之,如果你肯定能一起发送多个数据集合(例如HTTP响应的 ...

  10. 算法笔记_110:第四届蓝桥杯软件类省赛真题(JAVA软件开发高职高专组部分习题)试题解答

     目录 1 猜年龄 2 组素数 3 第39级台阶 4 核桃的数量 5 打印十字图 6 买不到的数目   前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 猜年龄 标题: ...