windows从注册表获取ip配置信息
来源:互联网 发布:ireport java 编辑:程序博客网 时间:2024/06/09 20:26
DNS的获取方式有多种:
这里提供一种方式是从注册表获取的:
在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Adapters可以获取网卡的SettingID,
//HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Adaptersbool 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;
阅读全文
0 0
- windows从注册表获取ip配置信息
- 从注册表获取Ip
- 从Windows系统服务获取活动用户的注册表信息
- windows系统信息获取 注册表
- 从注册表获取所有的串口[Windows]
- wince设置ip地址,wince的网络配置注册表信息
- 利用Windows API函数和注册表获取系统信息
- windows 批处理按照配置信息从主机不同目录获取文件保存在windows
- Windows XP注册表信息
- 从淘宝API根据IP获取IP城市信息
- 从注册表获取路径
- Windows 获取注册表属性
- asp.net 获取 注册表信息
- 通过注册表获取系统信息
- 通过注册表获取适配器信息
- 通过注册表获取硬件信息
- 根据注册表获取cpu信息
- 运用 Windows 工具获取 IPv6 配置信息
- Anaconda 安装程序网址
- 不做高频,量化策略到底能不能战胜抛硬币?
- Kafka vs RocketMQ——单机系统可靠性
- Python--类的高级特性
- 二、MySQL数据库数据迁移
- windows从注册表获取ip配置信息
- Android_监听系统短信
- 国外官网ngrok内网映射外网方法
- android 字符串比较
- angular-cli配置 windows
- monkey运行日志基础分析
- 一篇不错的v4l2入门文档
- 用python实现简单感知机算法
- 什么是Web容器