windows从注册表获取ip配置信息
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配置信息相关推荐
- 通过注册表获取电脑硬件信息
通过注册表获取电脑硬件信息 可以获取的硬件信息:设备型号,设备厂商,设备SN号:电脑背面条形码下面,cpu型号,操作系统名称. 下面是获取sn号的代码示例: std::string GetSystem ...
- java调用本地shell_java通过ProcessBuilder执行本地shell命令 获取ip配置信息
[java]代码库import java.io.File; import java.io.IOException; import java.io.InputStream; import java.ut ...
- C# 系统应用之通过注册表获取USB使用记录(一)
该文章是"个人电脑历史记录清除软件"项目的系统应用系列文章. 前面已经讲述了如何清除IE浏览器的历史记录.获取Windows最近访问文件记录.清除回收站等功能.现在我需要完成的是删 ...
- c# u盘使用记录_C# 系统应用之通过注册表获取USB使用记录(一)
该文章是"个人电脑历史记录清除软件"项目的系统应用系列文章. 前面已经讲述了如何清除IE浏览器的历史记录.获取Windows最近访问文件记录.清除回收站等功能.现在我需要完成的是删 ...
- 通过Windows注册表获取U盘、移动硬盘和USB读卡器等设备的PID、VID和序列号
通过Windows注册表获取U盘.移动硬盘和USB读卡器等设备的PID.VID和序列号 http://blog.csdn.net/trustbo/article/details/50057463 LP ...
- 认识Windows XP注册表
认识Windows XP注册表 1.概述 Windows XP注册表实际上是一个庞大的数据库,这个数据库记录了机器软硬件环境的各种信息,对操作系统及应用程序的正常运行至关重要.具体来讲,此数据库包含了 ...
- C++通过WMI获取硬件配置信息
C++通过WMI获取硬件配置信息 WMI即Windows管理规范.通过它可以访问.配置.管理和监视几乎所有的Windows资源. WMI提供程序在WMI和托管资源之间扮演着中间方的角色.提供程序代表使 ...
- windows XP 注册表
注册表键的信息与键值数据的运用 HKEY_CLASSES_ROOT: 基层类别键,定义了系统中所有已经注册的文件 扩展名,文件类型,文件图标等. HKEY_CURRENT_USER: 定义了当前用 ...
- 通过注册表获取Internet选项中代理服务器参数
大多数浏览器设置代理服务器都是设置internet选项中的代理服务,如果想获取这个信息可以通过访问注册表获取 int nRet = RegOpenKeyEx(HKEY_CURRENT_USER, L& ...
最新文章
- CSS背景不透明度[重复]
- 快速学习正则表达式,不用死记硬背,这里有份中文资源和互动学习网站
- 那些常见的C++、Qt基础面试题
- 316. Remove Duplicate Letters 去除重复字母
- kafka和storm集成_Storm和Kafka集成的重要生产错误和修复
- 浅谈百度司南大数据企业的风向标
- pgsql函数定时更新表_Postgresql PL/PGSQL 程序语言系列 1 (存储过程过时了吗,与函数)...
- 在不推动提交的情况下触发Travis-CI重建?
- vue项目中配置favicon图标
- Python安装Tensorflow
- paip.提升用户体验---WEB程序页面的手机及平板浏览器兼容支持
- css实现圆球旋像水波波动_这49个CSS知识点你未必会知道
- Excel 中VBA脚本的简单应用
- Spring实战——UrlResource
- LabVIEW终止符
- centos7.5安装Jenkins
- 如何查询快递单号物流
- 人工智能发展到GPT4经历了什么,从专家系统到机器学习再到深度学习,从大模型到现在的GPT4
- 《股票魔法师》第3-5章读书分享
- C++期末考试选择题题库100道
热门文章
- vue点击遮罩层禁止关闭dialog弹窗
- 洛谷P6503[COCI2010-2011#3] DIFERENCIJA
- 经常玩电脑正确的坐姿_小芯机:玩电脑的正确姿势,你get了吗?
- 【附源码】计算机毕业设计JAVA至臻阁古董拍卖网
- 歌谣学前端之React中jsx注意事项
- 极米科技上市:发明专利曾被宣告无效,钟波的“5年颠覆”豪言落空
- 攻防世界 web高手进阶区 9分题 bilibili
- 常见蛋白质种类_关于健身常用的4种蛋白粉
- body英语什么意思是什么_body是什么意思??
- python怎么制作条形图模板,Python-使用XlsxWriter模块在Excel工作表中绘制条形图