欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

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

    • 资源ID:3153781       资源大小:40.11KB        全文页数:16页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    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, / 并口 Win32_SerialPort, / 串口 Win32_SerialPortConfiguration, / 串口配置 Win32_SoundDevice, / 多媒体设置,一般指声卡。 Win32_SystemSlot, / 主板插槽 (ISA & PCI & AGP) Win32_USBController, / USB 控制器 Win32_NetworkAdapter, / 网络适配器 Win32_NetworkAdapterConfiguration, / 网络适配器设置 Win32_Printer, / 打印机 Win32_PrinterConfiguration, / 打印机设置 Win32_PrintJob, / 打印机任务 Win32_TCPIPPrinterPort, / 打印机端口 Win32_POTSModem, / MODEM Win32_POTSModemToSerialPort, / MODEM 端口 Win32_DesktopMonitor, / 显示器 Win32_DisplayConfiguration, / 显卡 Win32_DisplayControllerConfiguration, / 显卡设置 Win32_VideoController, / 显卡细节。 Win32_VideoSettings, / 显卡支持的显示模式。 / 操作系统 Win32_TimeZone, / 时区 Win32_SystemDriver, / 驱动程序 Win32_DiskPartition, / 磁盘分区 Win32_LogicalDisk, / 逻辑磁盘 Win32_LogicalDiskToPartition, / 逻辑磁盘所在分区及始末位置。 Win32_LogicalMemoryConfiguration, / 逻辑内存配置 Win32_PageFile, / 系统页文件信息 Win32_PageFileSetting, / 页文件设置 Win32_BootConfiguration, / 系统启动配置 Win32_ComputerSystem, / 计算机信息简要 Win32_OperatingSystem, / 操作系统信息 Win32_StartupCommand, / 系统自动启动程序 Win32_Service, / 系统安装的服务 Win32_Group, / 系统管理组 Win32_GroupUser, / 系统组帐号 Win32_UserAccount, / 用户帐号 Win32_Process, / 系统进程 Win32_Thread, / 系统线程 Win32_Share, / 共享 Win32_NetworkClient, / 已安装的网络客户端 Win32_NetworkProtocol, / 已安装的网络协议 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)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)CString strDate=szDataFile; /MessageBox(strDate);if(strDate.GetLength&gt0) return strDate;else return ""return ""if(root="HKEY_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)CString strDate=szDataFile; /MessageBox(strDate);if(strDate.GetLength&gt0) return strDate;else return ""return ""return ""获取用户名: GetWindowsDirectory(szInfo, MAX_PATH + 1);获取系统补丁: using System.Management;var searchOS = new ManagementObjectSearcher("Select * from Win32_OperatingSystem");Response.Write("&lth3&gt本机最新安装补丁信息:&lt/h3&gt" + "&ltbr/&gt");foreach (var item in searchOS.Get)foreach (var itemPro in item.Properties)Response.Write(itemPro.Name + ":" + itemPro.Value + "&ltbr/&gt");Response.Write("&ltbr/&gt");Response.Write("&lthr/&gt");var searchQFE = new ManagementObjectSearcher("Select * from Win32_QuickFixEngineering");Response.Write("&lth3&gt本机历史安装补丁信息:&lt/h3&gt" + "&ltbr/&gt");foreach (var item in searchQFE.Get)foreach (var itemPro in item.Properties)Response.Write(itemPro.Name + ":" + itemPro.Value + "&ltbr/&gt");Response.Write("&ltbr/&gt");Response.Write("&lthr/&gt");通过注册表:/通过注册表获取的信息RegOpenKeyEx(HKEY_LOCAL_MACHINE, RegKey, 0, KEY_QUERY_VALUE, &hKey);/ 打开注册表的键;RegEnumValue(hKey, dwIndex, EnvironVariable, &dwVariableLength, NULL, NULL, NULL, NULL);/ 查询我们需要的信息值;GetEnvironmentVariable(EnvironVariable, EnvironString, 1024);获取磁盘分区信息:#include &ltiostream&gt#include &ltwindows.h&gtusing namespace std; int mainint DiskCount = 0;DWORD DiSKINfo = GetLogicalDrives;/利用GetLogicalDrives函数可以获取系统中逻辑驱动器的数量,函数返回的是一个32位无符号整型数据。while(DiskInfo)/通过循环操作查看每一位数据是否为1,假如为1则磁盘为真,假如为0则磁盘不存在。if(DiskInfo&1)/通过位运算的逻辑与操作,判定是否为1+DiskCount;DiskInfo = DiskInfo &gt&gt 1;/通过位运算的右移操作保证每循环一次所检查的位置向右移动一位。/DiskInfo = DiskInfo/2;cout&lt&lt"逻辑磁盘数量:"&lt&ltDiskCount&lt&ltendl;/-int DSLength = GetLogicalDriveStrings(0,NULL);/通过GetLogicalDriveStrings函数获取所有驱动器字符串信息长度。char* DStr = new charDSLength;/用获取的长度在堆区创建一个c风格的字符串数组GetLogicalDriveStrings(DSLength,(LPTSTR)DStr);/通过GetLogicalDriveStrings将字符串信息复制到堆区数组中,其中保存了所有驱动器的信息。int DType;int si=0;BOOL fResult;unsigned _int64 i64FreeBytesToCaller;unsigned _int64 i64TotalBytes;unsigned _int64 i64FreeBytes;for(int i=0;i&ltDSLength/4;+i)/为了显示每个驱动器的状态,则通过循环输出实现,由于DStr内部保存的数据是A:NULLB:NULLC:NULL,这样的信息,所以DSLength/4可以获得具体大循环范围char dir3=DStrsi,':',''cout&lt&ltdir;DType = GetDriveType(DStr+i*4);/GetDriveType函数,可以获取驱动器类型,参数为驱动器的根目录if(DType = DRIVE_FIXED)cout&lt&lt"硬盘"else if(DType = DRIVE_CDROM)cout&lt&lt"光驱"else if(DType = DRIVE_REMOVABLE)cout&lt&lt"可移动式磁盘"else if(DType = DRIVE_REMOTE)cout&lt&lt"网络磁盘"else if(DType = DRIVE_RAMDISK)cout&lt&lt"虚拟RAM磁盘"else if (DType = DRIVE_UNKNOWN)cout&lt&lt"未知设备"fResult = GetDiskFreeSpaceEx (dir,(PULARGE_INTEGER)&i64FreeBytesToCaller,(PULARGE_INTEGER)&i64TotalBytes,(PULARGE_INTEGER)&i64FreeBytes);/GetDiskFreeSpaceEx函数,可以获取驱动器磁盘的空间状态,函数返回的是个BOOL类型数据if(fResult)/通过返回的BOOL数据判定驱动器是否在工作状态cout&lt&lt" totalspace:"&lt&lt(float)i64TotalBytes/1024/1024&lt&lt" MB"/磁盘总容量cout&lt&lt" freespace:"&lt&lt(float)i64FreeBytesToCaller/1024/1024&lt&lt" MB"/磁盘剩余空间elsecout&lt&lt" 设备未预备好"cout&lt&ltendl;si+=4;system("pause"); 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; 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 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; 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风格的字符串数组GetLogicalDriveStrings(DSLength,(LPTSTR)DStr);/通过GetLogicalDriveStrings将字符串信息复制到堆区数组中,其中保存了所有驱动器的信息。int DType;int si=0;for(int i=0;i&ltDSLength/4;+i)/为了显示每个驱动器的状态,则通过循环输出实现,由于DStr内部保存的数据是A:NULLB:NULLC:NULL,这样的信息,所以DSLength/4可以获得具体大循环范围char dir3=DStrsi,':',''/cout&lt&ltdir;DType = GetDriveType(DStr+i*4);/GetDriveType函数,可以获取驱动器类型,参数为驱动器的根目录if(DType = DRIVE_FIXED)printf("%c",*dir);printf("硬盘n");si+=4;system("pause");/return 1;

    注意事项

    本文(C++设备信息获取方法.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开