zoukankan      html  css  js  c++  java
  • vc 取windows系统信息 版本 cpu信息 内存信息 ie版本信息 office版本

    头文件:
    /*! Copyright (C)
    *-------------------------------------------------------------------------------------------------
    *
    *    @file SystemInfo.h
    *
    *    @date 2009.9.15
    *
    *    @取系统环境、软件版本信息、上网环境等
    *
    *-------------------------------------------------------------------------------------------------
    */
    #pragma once

    #include "stdafx.h"

    class CSystemInfo
    {
    public:
    CString GetOSInfo();
    CString GetMemInfo();
    CString GetCPUModel();
    CString GetIEInfo();
    CString GetFirfoxInfo();
    CString GetOfficeInfo();
    };

    功能实现
    // vifo.cpp : 定义控制台应用程序的入口点。

    #include "stdafx.h"
    #include "SystemInfo.h"
    #include <Atlbase.h>
    #include<Windows.h>
    #include<iostream>
    using namespace std;


    #define BUFSIZE                80
    #define SM_SERVERR2         89

    typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);

    CString CSystemInfo::GetOSInfo()
    {
    CString strRet;

    OSVERSIONINFOEX osvi;
    BOOL bOsVersionInfoEx;
    CString strTemp;
    SYSTEM_INFO si;
    PGNSI pGNSI;

    ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
    ZeroMemory(&si, sizeof(SYSTEM_INFO));

    if(!(bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO *)&osvi)))
    {
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    if(!GetVersionEx((OSVERSIONINFO *)&osvi))
    {
    return strRet;
    }
    }

    switch(osvi.dwPlatformId)
    {
    case VER_PLATFORM_WIN32_NT:
    //Windows NT

    if((osvi.dwMajorVersion == 6) && (osvi.dwMinorVersion == 0))
    {
    if(osvi.wProductType == VER_NT_WORKSTATION)
    {
    strRet = _T("操作系统:                              Microsoft Windows Vista ");
    }
    }

    if(osvi.dwMajorVersion == 5)
    {
    switch(osvi.dwMinorVersion)
    {
    case 0:
    strRet = _T("操作系统:                              Microsoft Windows 2000 ");
    break;
    case 1:
    strRet = _T("操作系统:                              Microsoft Windows XP ");
    break;
    case 2:
    pGNSI = (PGNSI) GetProcAddress(
    GetModuleHandle(_T("kernel32.dll")),
    "GetNativeSystemInfo");
    if(NULL != pGNSI)
    pGNSI(&si);

    if( GetSystemMetrics(SM_SERVERR2) )
    strRet.Append(_T("Microsoft Windows Server 2003 "R2" "));
    else if( osvi.wProductType == VER_NT_WORKSTATION &&
    si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
    {
    strRet = _T("操作系统:                                  Microsoft Windows XP Professional x64 Edition ");
    }
    else strRet = _T("操作系统:                                 Microsoft Windows Server 2003, ");

    break;
    default:
    break;
    }
    }

    if(osvi.dwMajorVersion <= 4)
    {
    strRet = _T("操作系统:                                Microsoft Windows NT ");
    }

    if(bOsVersionInfoEx)
    {
    if ( osvi.wProductType == VER_NT_WORKSTATION &&
    si.wProcessorArchitecture!=PROCESSOR_ARCHITECTURE_AMD64)
    {
    if( osvi.dwMajorVersion == 4 )
    strRet.Append(_T("Workstation 4.0 "));
    else if( osvi.wSuiteMask & VER_SUITE_PERSONAL )
    strRet.Append(_T("Home Edition "));
    else strRet.Append(_T("Professional "));
    }
    else if ( osvi.wProductType == VER_NT_SERVER ||
    osvi.wProductType == VER_NT_DOMAIN_CONTROLLER )
    {
    if(osvi.dwMajorVersion==5 && osvi.dwMinorVersion==2)
    {
    if ( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_IA64 )
    {
    if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
    strRet.Append(_T("Datacenter Edition for Itanium-based Systems"));
    else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
    strRet.Append(_T("Enterprise Edition for Itanium-based Systems"));
    }
    else if ( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64 )
    {
    if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
    strRet.Append(_T("Datacenter x64 Edition "));
    else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
    strRet.Append(_T("Enterprise x64 Edition "));
    else strRet.Append(_T("Standard x64 Edition "));
    }
    else
    {
    if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
    strRet.Append(_T("Datacenter Edition "));
    else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
    strRet.Append(_T("Enterprise Edition "));
    else if ( osvi.wSuiteMask == VER_SUITE_BLADE )
    strRet.Append(_T("Web Edition "));
    else strRet.Append(_T("Standard Edition "));
    }
    }
    else if(osvi.dwMajorVersion==5 && osvi.dwMinorVersion==0)
    {
    if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
    strRet.Append(_T("Datacenter Server "));
    else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
    strRet.Append(_T("Advanced Server "));
    else strRet.Append(_T("Server "));
    }
    else // Windows NT 4.0
    {
    if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
    strRet.Append(_T("Server 4.0, Enterprise Edition "));
    else strRet.Append(_T("Server 4.0 "));
    }
    }       
    }
    else
    {
    HKEY hKey;
    TCHAR szProductType[BUFSIZE];
    DWORD dwBufLen = BUFSIZE;
    LONG lRet;

    lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
    _T("SYSTEM\CurrentControlSet\Control\ProductOptions"),
    0, KEY_QUERY_VALUE, &hKey );
    if( lRet != ERROR_SUCCESS )
    return strRet;

    lRet = RegQueryValueEx( hKey, _T("ProductType"), NULL, NULL,
    (LPBYTE) szProductType, &dwBufLen);
    RegCloseKey( hKey );

    if( (lRet != ERROR_SUCCESS) || (dwBufLen > BUFSIZE) )
    return strRet;

    if ( lstrcmpi(_T("WINNT"), szProductType) == 0 )
    strRet.Append(_T("Workstation "));
    if ( lstrcmpi(_T("LANMANNT"), szProductType) == 0 )
    strRet.Append(_T("Server "));
    if ( lstrcmpi(_T("SERVERNT"), szProductType) == 0 )
    strRet.Append(_T("Advanced Server "));

    strTemp.Format(_T("%d.%d "), osvi.dwMajorVersion, osvi.dwMinorVersion);
    strRet.Append(strTemp);   
    }

    if( osvi.dwMajorVersion == 4 &&
    lstrcmpi( osvi.szCSDVersion, _T("Service Pack 6" )) == 0 )
    {
    HKEY hKey;
    LONG lRet;

    lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
    _T("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\Q246009"),
    0, KEY_QUERY_VALUE, &hKey );
    if( lRet == ERROR_SUCCESS )
    {
    strTemp.Format(_T("Service Pack 6a (Build %d) "), osvi.dwBuildNumber & 0xFFFF);
    strRet.Append(strTemp);
    }
    else // Windows NT 4.0 prior to SP6a
    {
    strTemp.Format(_T("%s (Build %d) "), osvi.szCSDVersion, osvi.dwBuildNumber & 0xFFFF);
    strRet.Append(strTemp);
    }

    RegCloseKey( hKey );
    }
    else // not Windows NT 4.0
    {
    strTemp.Format(_T("%s (Build %d) "), osvi.szCSDVersion, osvi.dwBuildNumber & 0xFFFF);
    strRet.Append(strTemp);
    }

    break;
    case VER_PLATFORM_WIN32_WINDOWS:
    //Windows 9X
    if(osvi.dwMajorVersion == 4)
    {
    switch(osvi.dwMinorVersion)
    {
    case 0:
    strRet = _T("操作系统:                              Microsoft Windows 95 ");
    if (osvi.szCSDVersion[1] == L'C' || osvi.szCSDVersion[1] == L'B')
    strRet.Append(_T("OSR2 "));
    break;
    case 10:
    strRet = _T("操作系统:                              Microsoft Windows 98 ");
    if ( osvi.szCSDVersion[1] == L'A' || osvi.szCSDVersion[1] == L'B')
    strRet.Append(_T("SE "));
    break;
    case 90:
    strRet = _T("操作系统:                              Microsoft Windows Me ");
    break;
    default:
    break;
    }
    }

    break;
    case VER_PLATFORM_WIN32s:
    break;
    default:
    break;
    }
    strRet.Append(_T(" "));
    return strRet;
    }

    CString CSystemInfo::GetCPUModel()
    {
    CString strRet;

    CRegKey regKey;
    TCHAR szModel[200];
    DWORD dwLen = 200;
    if(regKey.Open(HKEY_LOCAL_MACHINE, _T("HARDWARE\DESCRIPTION\System\CentralProcessor\0"), KEY_QUERY_VALUE) == ERROR_SUCCESS)
    {
    if(regKey.QueryStringValue(_T("ProcessorNameString"), szModel, &dwLen) == ERROR_SUCCESS)
    {
    strRet = _T(" 以下为用户系统信息: 处理器(CPU):                      ");
    strRet.Append(szModel);
    strRet.Append(_T(" "));
    }
    else
    {
    dwLen = 200;
    if(regKey.QueryStringValue(_T("Identifier"), szModel, &dwLen) == ERROR_SUCCESS)
    {
    strRet = _T(" 处理器(CPU)                      ");
    strRet.Append(szModel);
    strRet.Append(_T(" "));
    }
    }
    }
    return strRet;

    }

    CString CSystemInfo::GetMemInfo()
    {
    CString strRet;

    TCHAR szSize[100];
    MEMORYSTATUS ms;
    GlobalMemoryStatus(&ms);

    if(StrFormatByteSize(ms.dwTotalPhys, szSize, 100) != NULL)
    {
    strRet=(_T("物理内存:                              "));
    strRet.Append(szSize);
    strRet.Append(_T(" "));
    }
    return strRet;

    }

    CString CSystemInfo::GetIEInfo()
    {
    CString strRet;
    CString str;
    CString strr;
    CString stf;
    CString stff;
    CRegKey regKey;
    TCHAR szVer[200];
    DWORD dwLen = 200;

    if(regKey.Open(HKEY_CLASSES_ROOT, _T("http\shell\open\command"), KEY_QUERY_VALUE) == ERROR_SUCCESS)
    {
    if(regKey.QueryStringValue(_T(""), szVer, &dwLen) == ERROR_SUCCESS)
    {  
    str = "Internet Explorer";
    strr.Format(_T("%s"),szVer);
    int index = strr.Find(str);

    if(index >= 0)
    {   
    strRet = _T("默认浏览器:                           Internet Explorer ");
    }


    stf = "Mozilla Firefox";
    stff.Format(_T("%s"),szVer);
    index = stff.Find(stf);
    if(index >= 0)
    {
    strRet = _T("默认浏览器:                          Mozilla Firefox ");
    }

    }
    }

    if(regKey.Open(HKEY_LOCAL_MACHINE, _T("SOFTWARE\Microsoft\Internet Explorer"), KEY_QUERY_VALUE) == ERROR_SUCCESS)
    {
    if(regKey.QueryStringValue(_T("Version"), szVer, &dwLen) == ERROR_SUCCESS)
    {
    strRet.Append(_T("IE 版本                                  "));
    strRet.Append(_T("Internet Explorer V"));
    strRet.Append(szVer);
    strRet.Append(_T(" "));
    }
    }

    return strRet;

    }
    CString CSystemInfo::GetFirfoxInfo()
    {
    CString strRet;
    CRegKey regKey;
    TCHAR szVer[200];
    DWORD dwLen = 200;
    if(regKey.Open(HKEY_LOCAL_MACHINE, _T("SOFTWARE\Mozilla\Mozilla Firefox"), KEY_QUERY_VALUE) == ERROR_SUCCESS)
    {     
    if(regKey.QueryStringValue(_T("CurrentVersion"), szVer, &dwLen) == ERROR_SUCCESS)
    {
    strRet = _T("Firefox 版本:                         ");
    strRet.Append(szVer);
    strRet.Append(_T(" "));
    }
    }
    return strRet;   

    }
    CString CSystemInfo::GetOfficeInfo()
    {
    CString strRet;
    CString strW;
    CString strO;
    CRegKey regKey;

    TCHAR szVer[200];
    TCHAR szW[200];
    DWORD dwLen = 200;
    int v;
    int p;

    for(v = 8;v <= 12;v++)//Mircrosoft office 8.0-----12.0
    {
    HKEY hOffice;
    DWORD dwValue,dwLength,dwType = REG_SZ;

    strRet.Format(_T("SOFTWARE\Microsoft\Office\%d.0\Common\InstallRoot"),v);
    dwValue = RegOpenKeyExW(HKEY_LOCAL_MACHINE,strRet,0,KEY_READ,&hOffice);

    if (dwValue != ERROR_SUCCESS)
    {
    continue;
    }

    dwLength = 0;
    dwValue = RegQueryValueEx(hOffice, _T("Path"),0, &dwType,NULL, &dwLength); //Mircrosoft office 路径是否存在,如不存在返回继续循环

    if ( dwValue != ERROR_SUCCESS || dwLength <= 0)
    {
    RegCloseKey(hOffice);
    continue;
    }

    strRet.Format(_T("SOFTWARE\Microsoft\Office\%d.0\Common\ProductVersion"), v);
    if (regKey.Open(HKEY_LOCAL_MACHINE, strRet, KEY_QUERY_VALUE) == ERROR_SUCCESS)
    {
    if(regKey.QueryStringValue(_T("LastProduct"),szVer,&dwLen) == ERROR_SUCCESS)//取office 版本号
    {
    strRet = _T("Microsoft Office 版本:         ");
    strRet.Append(szVer);
    strRet.Append(_T(" "));
    break;
    }
    }
    }

    for(v = 1;v <= 6;v++)                                               //金山 WPS office版本1.0-------6.0
    {
    HKEY hOffice;
    DWORD dwLength,dwValue,dwType = REG_SZ;
    strW.Format(_T("SOFTWARE\Kingsoft\Office\%d.0\common"), v);
    dwValue = RegOpenKeyExW(HKEY_LOCAL_MACHINE, strW, 0,KEY_READ,&hOffice);

    if(dwValue != ERROR_SUCCESS)
    {
    continue;
    }

    dwLength = 0;
    dwValue = RegQueryValueEx(hOffice, _T("InstallRoot"), 0,&dwType, NULL, &dwLength);//office 路径是否存在,如不存在返回继续循环
    if(dwValue != ERROR_SUCCESS || dwLength <= 0)
    {
    RegCloseKey(hOffice);
    continue;
    }
    strW.Format(_T("SOFTWARE\Kingsoft\Office\%d.0\common"), v);
    if (regKey.Open(HKEY_LOCAL_MACHINE, strW, KEY_QUERY_VALUE) == ERROR_SUCCESS)
    {
    if(regKey.QueryStringValue(_T("Version"),szW,&dwLen) == ERROR_SUCCESS)//取WPS版本号
    {
    strRet.Append(_T("WPS Office 版本:                  "));
    strRet.Append(szW);
    strRet.Append(_T(" "));
    }
    }
    }

    for(v = 1;v<=3;v++ )                                                          //openoffice
    {
    for(p = 0;p<10;p++)
    {
    HKEY hOffice;
    DWORD dwValue,dwLength,dwType = REG_SZ;

    strO.Format(_T("SOFTWARE\OpenOffice.org\OpenOffice.org\%d.%d"), v, p);
    dwValue = RegOpenKeyExW(HKEY_LOCAL_MACHINE,strO,0,KEY_READ,&hOffice);

    if (dwValue != ERROR_SUCCESS)
    {
    continue;
    }

    dwLength = 0;
    dwValue = RegQueryValueEx(hOffice, _T("Path"),0, &dwType,NULL, &dwLength); //office 路径是否存在,如不存在返回继续循环

    if ( dwValue != ERROR_SUCCESS || dwLength <= 0)
    {
    RegCloseKey(hOffice);
    continue;

    }
    strO.Format(_T("%d.%d"), v,p);
    strRet.Append(_T("Openoffice 版本:                  OpenOffice.org "));
    strRet.Append(strO);           
    }
    }
    return strRet;
    }


    功能显示
    #include "stdafx.h"
    #include "SystemInfo.h"
    #include <fstream>
    #include<iostream>
    using namespace std;

    int __cdecl _tmain()
    {
    CSystemInfo s;
    s.GetOSInfo();
    s.GetCPUModel();
    s.GetMemInfo();
    s.GetIEInfo();
    s.GetOfficeInfo();
    //wcout

    _tprintf( TEXT(" %s "), s.GetOSInfo() );
    _tprintf( TEXT(" %s "), s.GetCPUModel() );
    _tprintf( TEXT(" %s "), s.GetMemInfo() );
    _tprintf( TEXT(" %s "), s.GetIEInfo() );
    _tprintf( TEXT(" %s "), s.GetOfficeInfo() );

    CFile   cf;  
    CString   strPath;  
    strPath="ta.text";//记事本路径。比如e:/ta.txt;也可以使用相对路径。  
    cf.Open(strPath,CFile::modeCreate   |   CFile::modeWrite,NULL);//打开文件,此文件如果不存在,就给它再创个。  
    //CString   a=" ";//假设a为输入的字串
    //cf.Write(a,a.GetLength());
    cf.Write(s.GetOSInfo(),s.GetOSInfo().GetLength()*2);
    //cf.Write(a,a.GetLength());
    cf.Write(s.GetCPUModel(),s.GetCPUModel().GetLength()*2);//写入到文件中。
    cf.Write(s.GetMemInfo(),s.GetMemInfo().GetLength()*2);
    cf.Write(s.GetIEInfo(),s.GetIEInfo().GetLength()*2);
    cf.Write(s.GetOfficeInfo(),s.GetOfficeInfo().GetLength()*2);
    cf.Close();//记得退出时,要关掉文件

    }
  • 相关阅读:
    编译器是C写的,包括一点C++,editor和debugger是C++写的(最早的16位编译器是纯汇编写的)
    2016 年美国大选,特朗普赢在哪儿?
    特朗普上台的原因:是经济全球化被甩出去人的反扑。但互联网时代不可阻挡,必须参与。开历史倒车是没用的,就像欧洲的羊吃人时代是一样的。信仰基督教以及美国传统价值观的那群老人,终归是要死去。
    Java 开发规约插件
    c#.net公共帮助类
    elasticsearch集群及filebeat server和logstash server
    NopCommerce源码架构
    局部函数
    C#实现人脸识别
    NET Core
  • 原文地址:https://www.cnblogs.com/sharecenter/p/5620992.html
Copyright © 2011-2022 走看看