C++设备信息获取方法.docx

上传人:牧羊曲112 文档编号:3153781 上传时间:2023-03-11 格式:DOCX 页数:16 大小:40.11KB
返回 下载 相关 举报
C++设备信息获取方法.docx_第1页
第1页 / 共16页
C++设备信息获取方法.docx_第2页
第2页 / 共16页
C++设备信息获取方法.docx_第3页
第3页 / 共16页
C++设备信息获取方法.docx_第4页
第4页 / 共16页
C++设备信息获取方法.docx_第5页
第5页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C++设备信息获取方法.docx》由会员分享,可在线阅读,更多相关《C++设备信息获取方法.docx(16页珍藏版)》请在三一办公上搜索。

1、C+设备信息获取方法00426-OEM-8992662-00006已知的设备:Win32_Processor, / CPU 处理器 Win32_PhysicalMemory, / 物理内存条 Win32_Keyboard, / 键盘 Win32_PointingDevice, / 点输入设备,包括鼠标。 Win32_FloppyDrive, / 软盘驱动器 Win32_DiskDrive, / 硬盘驱动器 Win32_CDROMDrive, / 光盘驱动器 Win32_BaseBoard, / 主板 Win32_BIOS, / BIOS 芯片 Win32_ParallelPort, / 并口

2、Win32_SerialPort, / 串口 Win32_SerialPortConfiguration, / 串口配置 Win32_SoundDevice, / 多媒体设置,一般指声卡。 Win32_SystemSlot, / 主板插槽 (ISA & PCI & AGP) Win32_USBController, / USB 控制器 Win32_NetworkAdapter, / 网络适配器 Win32_NetworkAdapterConfiguration, / 网络适配器设置 Win32_Printer, / 打印机 Win32_PrinterConfiguration, / 打印机设置

3、 Win32_PrintJob, / 打印机任务 Win32_TCPIPPrinterPort, / 打印机端口 Win32_POTSModem, / MODEM Win32_POTSModemToSerialPort, / MODEM 端口 Win32_DesktopMonitor, / 显示器 Win32_DisplayConfiguration, / 显卡 Win32_DisplayControllerConfiguration, / 显卡设置 Win32_VideoController, / 显卡细节。 Win32_VideoSettings, / 显卡支持的显示模式。 / 操作系统

4、Win32_TimeZone, / 时区 Win32_SystemDriver, / 驱动程序 Win32_DiskPartition, / 磁盘分区 Win32_LogicalDisk, / 逻辑磁盘 Win32_LogicalDiskToPartition, / 逻辑磁盘所在分区及始末位置。 Win32_LogicalMemoryConfiguration, / 逻辑内存配置 Win32_PageFile, / 系统页文件信息 Win32_PageFileSetting, / 页文件设置 Win32_BootConfiguration, / 系统启动配置 Win32_ComputerSys

5、tem, / 计算机信息简要 Win32_OperatingSystem, / 操作系统信息 Win32_StartupCommand, / 系统自动启动程序 Win32_Service, / 系统安装的服务 Win32_Group, / 系统管理组 Win32_GroupUser, / 系统组帐号 Win32_UserAccount, / 用户帐号 Win32_Process, / 系统进程 Win32_Thread, / 系统线程 Win32_Share, / 共享 Win32_NetworkClient, / 已安装的网络客户端 Win32_NetworkProtocol, / 已安装的

6、网络协议 CString ReadRegisteTable(CString root,CString path, CString key)HKEY hAppKey;LPCTSTR WINDS_SERVICE_REGISTRY_KEY=path;LPCTSTR DATA_FILE_SUB_KEY=key;char szDataFile80;if(root=HKEY_LOCAL_MACHINE)if (ERROR_SUCCESS = RegOpenKeyEx (HKEY_LOCAL_MACHINE,WINDS_SERVICE_REGISTRY_KEY,0,KEY_READ,&hAppKey)ULO

7、NG cbSize = MAX_PATH*sizeof(TCHAR);DWORD dwFlag = RegQueryValueEx (hAppKey,DATA_FILE_SUB_KEY,NULL,NULL,(LPBYTE)szDataFile,&cbSize);RegCloseKey (hAppKey);if (ERROR_SUCCESS = dwFlag)CString strDate=szDataFile; /MessageBox(strDate);if(strDate.GetLength>0) return strDate;else return ;return ;if(root=H

8、KEY_CURRENT_USER)if (ERROR_SUCCESS = RegOpenKeyEx (HKEY_CURRENT_USER,WINDS_SERVICE_REGISTRY_KEY,0,KEY_READ,&hAppKey)ULONG cbSize = MAX_PATH*sizeof(TCHAR);DWORD dwFlag = RegQueryValueEx (hAppKey,DATA_FILE_SUB_KEY,NULL,NULL,(LPBYTE)szDataFile,&cbSize);RegCloseKey (hAppKey);if (ERROR_SUCCESS = dwFlag)C

9、String strDate=szDataFile; /MessageBox(strDate);if(strDate.GetLength>0) return strDate;else return ;return ;return ;获取用户名: GetWindowsDirectory(szInfo, MAX_PATH + 1);获取系统补丁: using System.Management;var searchOS = new ManagementObjectSearcher(Select * from Win32_OperatingSystem);Response.Write(<h3

10、>本机最新安装补丁信息:</h3> + <br/>);foreach (var item in searchOS.Get)foreach (var itemPro in item.Properties)Response.Write(itemPro.Name + : + itemPro.Value + <br/>);Response.Write(<br/>);Response.Write(<hr/>);var searchQFE = new ManagementObjectSearcher(Select * from Win32_QuickFixEng

11、ineering);Response.Write(<h3>本机历史安装补丁信息:</h3> + <br/>);foreach (var item in searchQFE.Get)foreach (var itemPro in item.Properties)Response.Write(itemPro.Name + : + itemPro.Value + <br/>);Response.Write(<br/>);Response.Write(<hr/>);通过注册表:/通过注册表获取的信息RegOpenKeyEx(HKEY_LOCAL_MACH

12、INE, RegKey, 0, KEY_QUERY_VALUE, &hKey);/ 打开注册表的键;RegEnumValue(hKey, dwIndex, EnvironVariable, &dwVariableLength, NULL, NULL, NULL, NULL);/ 查询我们需要的信息值;GetEnvironmentVariable(EnvironVariable, EnvironString, 1024);获取磁盘分区信息:#include <iostream>#include <windows.h>using namespace std; int mainint

13、 DiskCount = 0;DWORD DiSKINfo = GetLogicalDrives;/利用GetLogicalDrives函数可以获取系统中逻辑驱动器的数量,函数返回的是一个32位无符号整型数据。while(DiskInfo)/通过循环操作查看每一位数据是否为1,假如为1则磁盘为真,假如为0则磁盘不存在。if(DiskInfo&1)/通过位运算的逻辑与操作,判定是否为1+DiskCount;DiskInfo = DiskInfo >> 1;/通过位运算的右移操作保证每循环一次所检查的位置向右移动一位。/DiskInfo = DiskInfo/2;cout<<逻辑磁

14、盘数量:<<DiskCount<<endl;/-int DSLength = GetLogicalDriveStrings(0,NULL);/通过GetLogicalDriveStrings函数获取所有驱动器字符串信息长度。char* DStr = new charDSLength;/用获取的长度在堆区创建一个c风格的字符串数组GetLogicalDriveStrings(DSLength,(LPTSTR)DStr);/通过GetLogicalDriveStrings将字符串信息复制到堆区数组中,其中保存了所有驱动器的信息。int DType;int si=0;BOOL fRe

15、sult;unsigned _int64 i64FreeBytesToCaller;unsigned _int64 i64TotalBytes;unsigned _int64 i64FreeBytes;for(int i=0;i<DSLength/4;+i)/为了显示每个驱动器的状态,则通过循环输出实现,由于DStr内部保存的数据是A:NULLB:NULLC:NULL,这样的信息,所以DSLength/4可以获得具体大循环范围char dir3=DStrsi,:,;cout<<dir;DType = GetDriveType(DStr+i*4);/GetDriveType函数,可以

16、获取驱动器类型,参数为驱动器的根目录if(DType = DRIVE_FIXED)cout<<硬盘;else if(DType = DRIVE_CDROM)cout<<光驱;else if(DType = DRIVE_REMOVABLE)cout<<可移动式磁盘;else if(DType = DRIVE_REMOTE)cout<<网络磁盘;else if(DType = DRIVE_RAMDISK)cout<<虚拟RAM磁盘;else if (DType = DRIVE_UNKNOWN)cout<<未知设备;fResult = GetDiskF

17、reeSpaceEx (dir,(PULARGE_INTEGER)&i64FreeBytesToCaller,(PULARGE_INTEGER)&i64TotalBytes,(PULARGE_INTEGER)&i64FreeBytes);/GetDiskFreeSpaceEx函数,可以获取驱动器磁盘的空间状态,函数返回的是个BOOL类型数据if(fResult)/通过返回的BOOL数据判定驱动器是否在工作状态cout<< totalspace:<<(float)i64TotalBytes/1024/1024<< MB;/磁盘总容量cout<< freespace

18、:<<(float)i64FreeBytesToCaller/1024/1024<< MB;/磁盘剩余空间elsecout<< 设备未预备好;cout<<endl;si+=4;system(pause); BOOL GetDeviceInfo(CStringArray& arrDrives) 08. 09. DWORD dw = :GetLogicalDriveStrings(0, NULL); 10. TCHAR* pAllDrivers = new TCHARdw; 11. :GetLogicalDriveStrings(dw, pAllDrivers);

19、12. LPCTSTR pDriver = pAllDrivers; 13. DWORD DriverNum = 0; 14. while(pDriver0 != 0) 15. 16. arrDrives.Add(pDriver); 17. DriverNum+; 18. pDriver = _tcschr(pDriver, 0) + 1; 19. 20. delete pAllDrivers; 21. return TRUE; 22./ 函数描述:函数名GetDeviceInfo02./ 功能:取驱动器信息 03./ GetLogicalDriveStrings返回的格式为A:0B:0C:0

20、 04./ 参数描述:arrDrives存储所有盘符 05./ 返回值描述:TRUE成功 FALSE失败 06./ 07.BOOL GetDeviceInfo(CStringArray& arrDrives)08. 09. DWORD dw = :GetLogicalDriveStrings(0, NULL); 10. TCHAR* pAllDrivers = new TCHARdw; 11. :GetLogicalDriveStrings(dw, pAllDrivers); 12. LPCTSTR pDriver = pAllDrivers; 13. DWORD DriverNum = 0;

21、 14. while(pDriver0 != 0) 15. 16. arrDrives.Add(pDriver); 17. DriverNum+;18. pDriver = _tcschr(pDriver, 0) + 1; 19. 20. delete pAllDrivers; 21. return TRUE; 22.int DSLength = GetLogicalDriveStrings(0,NULL);/通过GetLogicalDriveStrings函数获取所有驱动器字符串信息长度。char* DStr = new charDSLength;/用获取的长度在堆区创建一个c风格的字符串数

22、组GetLogicalDriveStrings(DSLength,(LPTSTR)DStr);/通过GetLogicalDriveStrings将字符串信息复制到堆区数组中,其中保存了所有驱动器的信息。int DType;int si=0;for(int i=0;i<DSLength/4;+i)/为了显示每个驱动器的状态,则通过循环输出实现,由于DStr内部保存的数据是A:NULLB:NULLC:NULL,这样的信息,所以DSLength/4可以获得具体大循环范围char dir3=DStrsi,:,;/cout<<dir;DType = GetDriveType(DStr+i*4);/GetDriveType函数,可以获取驱动器类型,参数为驱动器的根目录if(DType = DRIVE_FIXED)printf(%c,*dir);printf(硬盘n);si+=4;system(pause);/return 1;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号