VC++ MFC 遍历注册表,获取网卡名称。(设备管理器中的名称)

	HKEY hKey_tmp = NULL, hKey = NULL;
	TCHAR comNum[64],achKey[64];
	CString comname,sActive,temp;
	DWORD cbMaxSubKey = 255;	//键名的长度
	DWORD dwType = 10;
	DWORD dwSize = 255;
	sActive = _T("SYSTEM\\CurrentControlSet\\Control\\Class\\");	//注册表下已加载设备项

	if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,sActive,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS)
	{
		int i = 0;
		while(RegEnumKeyEx(hKey,i++, achKey, &cbMaxSubKey, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
		{
			dwSize = 255;
			cbMaxSubKey = 255;	
			if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, sActive+achKey, 0, KEY_READ, &hKey_tmp) == ERROR_SUCCESS)
			{			
				cbMaxSubKey = 255;
				dwSize = 255;
				//AfxMessageBox(_T("遍历over!")+sActive+achKey);
				if(RegQueryValueEx(hKey_tmp, _T("Class"), NULL, &dwType, (BYTE *)&comNum, &dwSize) == ERROR_SUCCESS)
				{
					comname.Format(L"%s",comNum);
					//AfxMessageBox(comname);			//提示输出
					if (comname==L"Net")
					{		
						cbMaxSubKey = 255;
						dwSize = 255;
						//第二次遍历
						//AfxMessageBox(_T("本子项是网卡:")+sActive+achKey);
						temp=sActive+achKey;
						if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, temp, 0, KEY_READ, &hKey) == ERROR_SUCCESS)
						{
							i=0;		cbMaxSubKey = 255;
							dwSize = 255;
							while(RegEnumKeyEx(hKey,i++, achKey, &cbMaxSubKey, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
							{

								cbMaxSubKey = 255;
								dwSize = 255;
								if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, temp+_T("\\")+achKey+_T("\\Ndi\\Interfaces"), 0, KEY_READ, &hKey_tmp) == ERROR_SUCCESS)
								{
									cbMaxSubKey = 255;
									dwSize = 255;
									//AfxMessageBox(sActive+_T("\\")+achKey+_T("\\Ndi\\Interfaces"));	
									if(RegQueryValueEx(hKey_tmp, _T("LowerRange"), NULL, &dwType, (BYTE *)&comNum, &dwSize) == ERROR_SUCCESS)
									{			cbMaxSubKey = 255;
									dwSize = 255;
									//AfxMessageBox(sActive+_T("\\")+achKey+_T("\\Ndi\\Interfaces"));
									comname.Format(L"%s",comNum);
									//AfxMessageBox(temp+_T("\\")+achKey+_T("\\Ndi\\Interfaces:::")+comname);			//提示输出
									if (comname == _TEXT("ethernet"))
									{dwSize = 255;
									//取网卡名称
									RegOpenKeyEx(HKEY_LOCAL_MACHINE, temp+_T("\\")+achKey, 0, KEY_READ, &hKey_tmp);
									//AfxMessageBox(temp+_T("\\")+achKey);
									RegQueryValueEx(hKey_tmp, _T("DriverDesc"), NULL, &dwType, (BYTE *)&comNum, &dwSize);

									comname.Format(L"%s",comNum);
									AfxMessageBox(_T("网卡名称:")+comname);
									}
									}
								}
							}
						}

						break;
					}
				}
			}
		}
	}
	RegCloseKey(hKey);
	RegCloseKey(hKey_tmp);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gamers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值