基于Visual C++之Windows核心编程代码分析(4)获取操作系统信息
来源:互联网 发布:c语言||什么意思 编辑:程序博客网 时间:2024/04/28 23:57
我们在进行Windows编程的时候,经常需要获取操作系统的信息,好根据操作系统的信息进行信息处理,保证软件的兼容性。
具体请见代码实现与注释分析。
/* 头文件 */#include <windows.h>#include <Lmcons.h>#include <stdio.h>/* 函数声明 */void ShowVersionInfo();void ShowSystemInfo();void GetFolders();void GetNames();void MouseSpeed();/* ************************************* int main()* 功能依次调用各示例函数**************************************/int main(){ShowVersionInfo();ShowSystemInfo();GetFolders();GetNames();MouseSpeed();}/* ************************************* void ShowVersionInfo()* 功能获取并显示系统版本信息**************************************/void ShowVersionInfo(){OSVERSIONINFOEX ovex;CHAR szVersionInfo[1024];*szVersionInfo = '\x00';// 设置参数大小,调用并判断是否成功ovex.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);if(!GetVersionEx(&ovex)){printf("error %d\n",GetLastError());return;}// 判断版本if(ovex.dwMajorVersion==5){if(ovex.dwMinorVersion==0)lstrcat(szVersionInfo,"Windows 2000 ");else if(ovex.dwMinorVersion==1)lstrcat(szVersionInfo,"Windows XP ");else if(ovex.dwMinorVersion==2)lstrcat(szVersionInfo,"Windows Server 2003 ");else if(ovex.dwMinorVersion==7)lstrcat(szVersionInfo,"Windows 7 ");}else if(ovex.dwMajorVersion == 6)lstrcat(szVersionInfo,"Windows Vista ");elselstrcat(szVersionInfo,"Windows NT 4.0 或者其他 ");// 安装的SP,字符串lstrcat(szVersionInfo,ovex.szCSDVersion);// 判断wProductType,产品类型switch(ovex.wProductType){case VER_NT_DOMAIN_CONTROLLER:lstrcat(szVersionInfo,"\n域控制器");break;case VER_NT_SERVER:lstrcat(szVersionInfo,"\n服务器");break;case VER_NT_WORKSTATION :lstrcat(szVersionInfo,"\n独立工作站");break;}// 判断wSuiteMaskif(ovex.wSuiteMask & VER_SUITE_PERSONAL){lstrcat(szVersionInfo,"\nWindows XP Home Edition");}if(ovex.wSuiteMask & VER_SUITE_SINGLEUSERTS){lstrcat(szVersionInfo,"\n安装了终端服务,但只支持一个会话");}// wSuiteMask成员还可能是以下值的组合//VER_SUITE_BLADE//VER_SUITE_COMPUTE_SERVER//VER_SUITE_DATACENTER//VER_SUITE_ENTERPRISE//VER_SUITE_EMBEDDEDNT//VER_SUITE_PERSONAL//VER_SUITE_SINGLEUSERTS//VER_SUITE_SMALLBUSINESS//VER_SUITE_SMALLBUSINESS_RESTRICTED//VER_SUITE_STORAGE_SERVER//VER_SUITE_TERMINALprintf("%s\n",szVersionInfo);}/* ************************************* void ShowSystemInfo()* 功能获取并显示硬件相关信息**************************************/void ShowSystemInfo(){SYSTEM_INFO si;GetSystemInfo(&si);printf("内存分页大小:0x%.8X,可用内存起始:0x%.8X,可用内存结束:0x%.8X,\n""处理器个数:%d,处理器类型:",si.dwPageSize,si.lpMinimumApplicationAddress,si.lpMaximumApplicationAddress,si.dwNumberOfProcessors);switch (si.dwProcessorType){case PROCESSOR_INTEL_386:printf("386");break;case PROCESSOR_INTEL_486:printf("486");break;case PROCESSOR_INTEL_PENTIUM:printf("pentium");printf(", Cpu Model 0x%.2X, Stepping 0x%.2X",(BYTE)(si.wProcessorRevision>>8),(BYTE)si.wProcessorRevision);break;}printf("\n处理器架构:");switch (si.wProcessorArchitecture){case PROCESSOR_ARCHITECTURE_INTEL:printf("intel");printf(" CPU vendor is %d",si.wProcessorLevel);break;case PROCESSOR_ARCHITECTURE_IA64:printf("64 bits intel");break;case PROCESSOR_ARCHITECTURE_AMD64:printf("64 bits AMD");break;case PROCESSOR_ARCHITECTURE_UNKNOWN:printf("UNKNOWN");break;}printf("\n");}/* *************************************void GetFolders()* 功能获取系统目录等信息**************************************/void GetFolders(){TCHAR szSystemDirectory[MAX_PATH];TCHAR szWindowsDirectory[MAX_PATH];GetSystemDirectory(szSystemDirectory,MAX_PATH);GetWindowsDirectory(szWindowsDirectory,MAX_PATH);printf("系统目录:\t%s\nWindows目录:\t%s\n",szSystemDirectory,szWindowsDirectory);}/* ************************************* void GetNames()* 功能获取计算机名、用户名等信息**************************************/void GetNames(){DWORD dwComputerNameLen = MAX_COMPUTERNAME_LENGTH+1;DWORD dwUserNameLen = UNLEN+1;TCHAR szComputerName[MAX_COMPUTERNAME_LENGTH+1];TCHAR szUserName[UNLEN + 1];if(!SetComputerName("My_Computer")){printf("Set Error %d",GetLastError());}GetComputerName(szComputerName,&dwComputerNameLen);printf("计算机名:%s\n",szComputerName);//ComputerNameNetBIOS //ComputerNameDnsHostname //ComputerNameDnsFullyQualified //ComputerNamePhysicalNetBIOS //ComputerNamePhysicalDnsHostname //ComputerNamePhysicalDnsDomain //ComputerNamePhysicalDnsFullyQualified dwComputerNameLen = MAX_COMPUTERNAME_LENGTH+1;GetComputerNameEx(ComputerNameDnsHostname,szComputerName,&dwComputerNameLen);printf("ComputerNameDnsHostname: %s\n",szComputerName);dwComputerNameLen = MAX_COMPUTERNAME_LENGTH+1;GetComputerNameEx(ComputerNamePhysicalNetBIOS,szComputerName,&dwComputerNameLen);printf("ComputerNamePhysicalNetBIOS: %s\n",szComputerName);GetUserName(szUserName,&dwUserNameLen);printf("用户名:%s\n",szUserName);}/* ************************************* void MouseSpeed()* 功能获取系统目录等信息**************************************/void MouseSpeed(){BOOL fResult;int aMouseInfo[3]; // 保存数据信息的数组// 调用 SystemParametersInfofResult = SystemParametersInfo(SPI_GETMOUSE, // 获取鼠标信息0, // 未使用&aMouseInfo, // 用于保存鼠标信息0); // 未使用// 把鼠标速度加倍 if( fResult ){aMouseInfo[2] = 2 * aMouseInfo[2]; SystemParametersInfo(SPI_SETMOUSE,// 设置鼠标信息0, // 未使用aMouseInfo,// 鼠标信息SPIF_SENDCHANGE); // 更新 win.ini }}
- 基于Visual C++之Windows核心编程代码分析(4)获取操作系统信息
- 基于Visual C++之Windows核心编程代码分析(4)获取操作系统信息
- 基于visual c++之windows核心编程代码分析(13)获取磁盘可用空间信息
- 基于visual c++之windows核心编程代码分析(13)获取磁盘可用空间信息
- 基于visual c++之windows核心编程代码分析(37)实践信息安全隐患监测-嗅探
- 基于visual c++之windows核心编程代码分析(21)获取和设置环境变量
- 基于visual c++之windows核心编程代码分析(21)获取和设置环境变量
- 基于visual c++之windows核心编程代码分析(19)枚举进程以及进程加载模块信息
- 基于visual c++之windows核心编程代码分析(19)枚举进程以及进程加载模块信息
- 基于visual c++之windows核心编程代码分析(23)遍历驱动器并获取驱动器属性
- 基于visual c++之windows核心编程代码分析(52)使用WMI 获取进程启动参数
- 基于visual c++之windows核心编程代码分析(23)遍历驱动器并获取驱动器属性
- 基于Visual C++之Windows核心编程代码分析(2)实现Windows用户管理
- 基于visual c++之windows核心编程代码分析(61)打造自己的Windows输入法
- 基于Visual C++之Windows核心编程代码分析(2)实现Windows用户管理
- 基于Visual C++之Windows核心编程代码分析(2)实现Windows用户管理
- 基于visual c++之windows核心编程代码分析(18)远程代码注入执行
- 基于visual c++之windows核心编程代码分析(18)远程代码注入执行
- javascript中的window的location和history学习总结
- JDK1.6_环境变量配置
- linux的hugepage的配置
- DataList简单分页
- 通讯录开发学习7(终结)
- 基于Visual C++之Windows核心编程代码分析(4)获取操作系统信息
- 练习(字典)
- 让table的边线一样粗细的方法。
- Java实践之路(设计模式)——工厂模式(工厂方法)
- Web Service代理
- 练习(数组)
- 如何学习网页技术CSS
- 重载new和delete后调用构造函数和析构函数顺序
- 压缩感知系列科普文章之一:填补空缺——压缩感知