DNS的获取方式有多种:

这里提供一种方式是从注册表获取的:

在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Adapters可以获取网卡的SettingID,

//HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Adapters
bool GetAdaptersKeyName(std::list<CString> *listAdapters)
{OutputDebugStringA("Get network config");//获取网卡名称 网卡名称,网卡别名string strAdapterName,strAdapterAlias;HKEY hKey, hSubKey;if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T("SYSTEM\\CurrentControlSet\\services\\Tcpip\\Parameters\\Adapters"),0,KEY_READ,&hKey) != ERROR_SUCCESS)return FALSE;DWORD dwIndex = 0;DWORD dwBufSize = 256;TCHAR szSubKey[256];listAdapters->clear();while(RegEnumKeyEx(hKey, dwIndex++, szSubKey, &dwBufSize, NULL, NULL, NULL, NULL) == ERROR_SUCCESS){if(RegOpenKeyEx(hKey, szSubKey, 0, KEY_READ, &hSubKey) == ERROR_SUCCESS){listAdapters->push_back(CString(szSubKey));RegCloseKey(hSubKey);}dwBufSize = 256;}    /* end of while */RegCloseKey(hKey);return true;
}

根据SettingID,再逐个查询获取到ip配置包含DNS的信息:

这里要查询 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces的SettingID下的 内容

typedef struct tagNetworkCfg
{TCHAR szIP[18];TCHAR szNetmask[18];TCHAR szGateway[18];TCHAR szDns1[256];TCHAR szDns2[18];
}NetworkCfg;bool GetNetworkCfg(NetworkCfg *cfg, CString strAdapterAlias)
{HKEY hKey;BYTE lpData[256];CString strKeyName = _T("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\");strKeyName += strAdapterAlias;if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,strKeyName,0,KEY_READ,&hKey) != ERROR_SUCCESS)return FALSE;DWORD dwBufSize = 256;DWORD dwDataType;if(RegQueryValueEx(hKey, _T("DhcpIPAddress"), 0,&dwDataType, lpData, &dwBufSize) == ERROR_SUCCESS)wcscpy(cfg->szIP,(LPCTSTR)lpData);else{if(RegQueryValueEx(hKey, _T("IPAddress"), 0, &dwDataType, lpData, &dwBufSize) == ERROR_SUCCESS)wcscpy(cfg->szIP,(LPCTSTR)lpData);}dwBufSize = 256;if(RegQueryValueEx(hKey, _T("DhcpSubnetMask"), 0, &dwDataType, lpData, &dwBufSize) == ERROR_SUCCESS)wcscpy(cfg->szNetmask,(LPCTSTR)lpData);else{if(RegQueryValueEx(hKey, _T("SubnetMask"), 0, &dwDataType, lpData, &dwBufSize) == ERROR_SUCCESS)wcscpy(cfg->szNetmask,(LPCTSTR)lpData);}dwBufSize = 256;if(RegQueryValueEx(hKey, _T("DhcpDefaultGateway"), 0, &dwDataType, lpData, &dwBufSize) == ERROR_SUCCESS)wcscpy(cfg->szGateway,(LPCTSTR)lpData);else{if(RegQueryValueEx(hKey, _T("DefaultGateway"), 0, &dwDataType, lpData, &dwBufSize) == ERROR_SUCCESS)wcscpy(cfg->szGateway,(LPCTSTR)lpData);}dwBufSize = 256;if(RegQueryValueEx(hKey, _T("DhcpNameServer"), 0, &dwDataType, lpData, &dwBufSize) == ERROR_SUCCESS)wcscpy(cfg->szDns1,(LPCTSTR)lpData);else{if(RegQueryValueEx(hKey, _T("NameServer"), 0, &dwDataType, lpData, &dwBufSize) == ERROR_SUCCESS)wcscpy(cfg->szDns1,(LPCTSTR)lpData);}RegCloseKey(hKey);return true;}

引用头内容有:

 std::list<CString> listAdapters;GetAdaptersKeyName(&listAdapters);std::list<NetworkCfg> networkCfgList;for (list<CString>::iterator iter = listAdapters.begin(); iter!=listAdapters.end();iter++){CString strTemp = *iter;NetworkCfg cfg;GetNetworkCfg(&cfg, strTemp);}
#include <string>
#include <list>#include <WinSock2.h>
#pragma comment(lib,"Ws2_32.lib")#include <Iphlpapi.h>
#pragma comment(lib, "Iphlpapi.lib")using namespace std;

windows从注册表获取ip配置信息相关推荐

  1. 通过注册表获取电脑硬件信息

    通过注册表获取电脑硬件信息 可以获取的硬件信息:设备型号,设备厂商,设备SN号:电脑背面条形码下面,cpu型号,操作系统名称. 下面是获取sn号的代码示例: std::string GetSystem ...

  2. java调用本地shell_java通过ProcessBuilder执行本地shell命令 获取ip配置信息

    [java]代码库import java.io.File; import java.io.IOException; import java.io.InputStream; import java.ut ...

  3. C# 系统应用之通过注册表获取USB使用记录(一)

    该文章是"个人电脑历史记录清除软件"项目的系统应用系列文章. 前面已经讲述了如何清除IE浏览器的历史记录.获取Windows最近访问文件记录.清除回收站等功能.现在我需要完成的是删 ...

  4. c# u盘使用记录_C# 系统应用之通过注册表获取USB使用记录(一)

    该文章是"个人电脑历史记录清除软件"项目的系统应用系列文章. 前面已经讲述了如何清除IE浏览器的历史记录.获取Windows最近访问文件记录.清除回收站等功能.现在我需要完成的是删 ...

  5. 通过Windows注册表获取U盘、移动硬盘和USB读卡器等设备的PID、VID和序列号

    通过Windows注册表获取U盘.移动硬盘和USB读卡器等设备的PID.VID和序列号 http://blog.csdn.net/trustbo/article/details/50057463 LP ...

  6. 认识Windows XP注册表

    认识Windows XP注册表 1.概述 Windows XP注册表实际上是一个庞大的数据库,这个数据库记录了机器软硬件环境的各种信息,对操作系统及应用程序的正常运行至关重要.具体来讲,此数据库包含了 ...

  7. C++通过WMI获取硬件配置信息

    C++通过WMI获取硬件配置信息 WMI即Windows管理规范.通过它可以访问.配置.管理和监视几乎所有的Windows资源. WMI提供程序在WMI和托管资源之间扮演着中间方的角色.提供程序代表使 ...

  8. windows XP 注册表

    注册表键的信息与键值数据的运用 HKEY_CLASSES_ROOT:  基层类别键,定义了系统中所有已经注册的文件 扩展名,文件类型,文件图标等. HKEY_CURRENT_USER:  定义了当前用 ...

  9. 通过注册表获取Internet选项中代理服务器参数

    大多数浏览器设置代理服务器都是设置internet选项中的代理服务,如果想获取这个信息可以通过访问注册表获取 int nRet = RegOpenKeyEx(HKEY_CURRENT_USER, L& ...

最新文章

  1. CSS背景不透明度[重复]
  2. 快速学习正则表达式,不用死记硬背,这里有份中文资源和互动学习网站
  3. 那些常见的C++、Qt基础面试题
  4. 316. Remove Duplicate Letters 去除重复字母
  5. kafka和storm集成_Storm和Kafka集成的重要生产错误和修复
  6. 浅谈百度司南大数据企业的风向标
  7. pgsql函数定时更新表_Postgresql PL/PGSQL 程序语言系列 1 (存储过程过时了吗,与函数)...
  8. 在不推动提交的情况下触发Travis-CI重建?
  9. vue项目中配置favicon图标
  10. Python安装Tensorflow
  11. paip.提升用户体验---WEB程序页面的手机及平板浏览器兼容支持
  12. css实现圆球旋像水波波动_这49个CSS知识点你未必会知道
  13. Excel 中VBA脚本的简单应用
  14. Spring实战——UrlResource
  15. LabVIEW终止符
  16. centos7.5安装Jenkins
  17. 如何查询快递单号物流
  18. 人工智能发展到GPT4经历了什么,从专家系统到机器学习再到深度学习,从大模型到现在的GPT4
  19. 《股票魔法师》第3-5章读书分享
  20. C++期末考试选择题题库100道

热门文章

  1. vue点击遮罩层禁止关闭dialog弹窗
  2. 洛谷P6503[COCI2010-2011#3] DIFERENCIJA
  3. 经常玩电脑正确的坐姿_小芯机:玩电脑的正确姿势,你get了吗?
  4. 【附源码】计算机毕业设计JAVA至臻阁古董拍卖网
  5. 歌谣学前端之React中jsx注意事项
  6. 极米科技上市:发明专利曾被宣告无效,钟波的“5年颠覆”豪言落空
  7. 攻防世界 web高手进阶区 9分题 bilibili
  8. 常见蛋白质种类_关于健身常用的4种蛋白粉
  9. body英语什么意思是什么_body是什么意思??
  10. python怎么制作条形图模板,Python-使用XlsxWriter模块在Excel工作表中绘制条形图