读取Windows的IP地址有三种方法:

  1. QT的QNetworkInterface
  2. IPHlpApi
  3. QT的QSettings读注册表

修改windows的IP地址使用 netsh

netsh interface ipv4 set address name = "以太网" source = static address = 192.168.0.106 mask = 255.255.255.0 gateway = 192.168.0.1

代码:

QT的QNetworkInterface

void QtNetwork::initNetwork()
{ui.comboBox->clear();QString text;QTextStream out(&text);QList<QNetworkInterface> ifaceList = QNetworkInterface::allInterfaces();for (int i = 0; i < ifaceList.count(); i++){QNetworkInterface var = ifaceList.at(i);out << QString::fromLocal8Bit("########## 设备%1 ############").arg(i) << endl;out << QString::fromLocal8Bit("接口名称:") << var.humanReadableName() << endl;out << QString::fromLocal8Bit("设备名称:") << var.name() << endl;out << QString::fromLocal8Bit("硬件地址:") << var.hardwareAddress() << endl;ui.comboBox->addItem(var.name());out << QString::fromLocal8Bit("IP地址列表:") << endl;// 读取一个IP地址的关联信息列表QList<QNetworkAddressEntry> entryList = var.addressEntries();for(int j = 0; j < entryList.count(); j++){QNetworkAddressEntry entry = entryList.at(j);out << QString::fromLocal8Bit("%1_地址:").arg(j) << endl;out << QString::fromLocal8Bit(" IP地址:") << entry.ip().toString() << endl;out << QString::fromLocal8Bit(" 子网掩码:") << entry.netmask().toString() << endl;out << QString::fromLocal8Bit(" 广播地址:") << entry.broadcast().toString() << endl;}}ui.textEdit->setPlainText(text);
}

IPHlpApi

void QtNetwork::initNetwork_IPHlpApi()
{QString text;QTextStream out(&text);//IP_ADAPTER_INFO结构体PIP_ADAPTER_INFO pIpAdapterInfo = NULL;pIpAdapterInfo = new IP_ADAPTER_INFO;//结构体大小unsigned long ulSize = sizeof(IP_ADAPTER_INFO);//获取适配器信息int nRet = GetAdaptersInfo(pIpAdapterInfo, &ulSize);if (ERROR_BUFFER_OVERFLOW == nRet){//空间不足,删除之前分配的空间delete[]pIpAdapterInfo;//重新分配大小pIpAdapterInfo = (PIP_ADAPTER_INFO) new BYTE[ulSize];//获取适配器信息nRet = GetAdaptersInfo(pIpAdapterInfo, &ulSize);//获取失败if (ERROR_SUCCESS != nRet){if (pIpAdapterInfo != NULL){delete[]pIpAdapterInfo;}return;}}//MAC 地址信息char szMacAddr[20];//赋值指针PIP_ADAPTER_INFO pIterater = pIpAdapterInfo;int i = 0;while (pIterater){out << QString::fromLocal8Bit("########## 设备%1 ############").arg(i) << endl;out << QString::fromLocal8Bit("网卡名称:") << pIterater->AdapterName << endl;out << QString::fromLocal8Bit("网卡描述:") << pIterater->Description << endl;sprintf_s(szMacAddr, 20, "%02X-%02X-%02X-%02X-%02X-%02X",pIterater->Address[0],pIterater->Address[1],pIterater->Address[2],pIterater->Address[3],pIterater->Address[4],pIterater->Address[5]);out << QString::fromLocal8Bit("MAC 地址:") << szMacAddr << endl;out << QString::fromLocal8Bit("IP地址列表:") << endl;//指向IP地址列表int j = 0;PIP_ADDR_STRING pIpAddr = &pIterater->IpAddressList;while (pIpAddr){out << QString::fromLocal8Bit("%1_地址:").arg(j) << endl;out << QString::fromLocal8Bit(" IP地址:") << pIpAddr->IpAddress.String << endl;out << QString::fromLocal8Bit(" 子网掩码:") << pIpAddr->IpMask.String << endl;//指向网关列表PIP_ADDR_STRING pGateAwayList = &pIterater->GatewayList;while (pGateAwayList){out << QString::fromLocal8Bit(" 网关:") << pGateAwayList->IpAddress.String << endl;pGateAwayList = pGateAwayList->Next;}pIpAddr = pIpAddr->Next;j++;}pIterater = pIterater->Next;i++;}//清理if (pIpAdapterInfo){delete[]pIpAdapterInfo;}ui.textEdit_2->setPlainText(text);
}

QT的QSettings读注册表

void QtNetwork::initNetwork_reg()
{QString text;QTextStream out(&text);QSettings reg("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\services\\Tcpip\\Parameters\\Interfaces\\", QSettings::NativeFormat);QStringList groupsList = reg.childGroups();qDebug() << "read size:" << groupsList.size();int i = 0;foreach(QString group, groupsList){out << QString::fromLocal8Bit("########## 设备%1 ############").arg(i) << endl;out << QString::fromLocal8Bit("设备名称:") << group << endl;reg.beginGroup(group);QString ip = reg.value("IPAddress").toString();if (!ip.isEmpty()){out << QString::fromLocal8Bit(" IP地址:") << ip << endl;}QString netmask = reg.value("SubnetMask").toString();if (!netmask.isEmpty()){out << QString::fromLocal8Bit(" 子网掩码:") << netmask << endl;}QString gateway = reg.value("DefaultGateway").toString();if (!gateway.isEmpty()){out << QString::fromLocal8Bit(" 网关:") << gateway << endl;}reg.endGroup();i++;}ui.textEdit_3->setPlainText(text);
}

修改IP地址

void QtNetworkEditDlg::on_pushButton_ok_clicked()
{QString name = m_interface.humanReadableName();QString ip = ui.lineEdit_ip->text();QString netmask = ui.lineEdit_netmask->text();QProcess cmd(this);// netsh interface ipv4 set address name = "以太网" source = static // address = 192.168.0.106 mask = 255.255.255.0 gateway = 192.168.0.1 gwmetric = 0QString command = "netsh interface ipv4 set address name = "+ name + " source = static address = " + ip+ " mask = " + netmask;cmd.start(command);cmd.waitForFinished();accept();
}

截图

程序下载连接: https://download.csdn.net/download/xiao503/10403325

Windows 使用QT读取IP地址并修改IP地址相关推荐

  1. 查看服务器ip修改记录,如果查看服务器ip地址和修改ip

    如果查看服务器ip地址和修改ip 内容精选 换一换 安装完操作系统后,需在当前iBMC远程管理界面中配置网卡IP地址才能远程连接服务器,配置方法如下.vi /etc/sysconfig/network ...

  2. linux临时配置mac地址,Linux获取网卡型号、mac地址、修改IP地址的几种方法

    1.获取所有有(无)网卡型号 方法一.ifconfig 用法:ifconfig | grep | cut -d ':' -f 1 ubuntu root@ubuntu:~# ifconfig | gr ...

  3. Linux:快速查看IP地址及修改IP地址

    导读 Linux下如何快速查看IP地址及修改IP地址,有一个方法供参考 查ip 方法/步骤1: 打开linux操作系统在进入到界面 方法/步骤2: 在桌面右击打开终端. 方法/步骤3: 终端里输入if ...

  4. 简易linux修改ip,让Linux修改IP、DNS等可以更简单

    修改IP: 可以用 netconfig,可惜每次都得输入完整的IP.掩码.网关和DNS. 不如直接 vi /etc/sysconfig/network-scripts/ifcfg-eth0 再 /et ...

  5. 服务器修改虚拟机地址,服务器修改虚拟机地址

    服务器修改虚拟机地址 内容精选 换一换 在华为云上安装完成后输入公网IP,无法连接目的虚拟机,端口无法访问工具.源端网络未连通目的端.目的端安全组未开放8082端口.目的端网络ACL禁用了8082端口 ...

  6. UNIAPP实战项目笔记43 购物车页面修改收货地址和修改默认地址

    UNIAPP实战项目笔记43 购物车页面修改收货地址和修改默认地址 实际案例图片 修改收货地址和修改默认地址页面布局和功能 具体内容图片自己替换哈,随便找了个图片的做示例 用到了vuex的状态机,具体 ...

  7. 一、安装VM虚拟机,安装Linux操作系统。修改主机名和IP地址以及修改ip地址与主机名的映射命令。

    1.安装VM虚拟机,下载[VMware_Workstation_15.0.2.10952284_XiaZaiBa]. 2.下载Linux操作系统,我这边下载的是CentOs7 3.修改主机名 ①:查看 ...

  8. win10修改服务器地址,win10 修改服务器地址

    win10 修改服务器地址 内容精选 换一换 通过华为云创建的ECS服务器默认使用华为云提供的内网DNS进行解析.内网DNS不影响ECS服务器对公网域名的访问.同时,还可以不经Internet,直接通 ...

  9. 服务器修改地址,服务器修改管理地址

    服务器修改管理地址 内容精选 换一换 在弹性云服务器上安装完成后输入公网IP,无法连接目的虚拟机,端口无法访问工具.源端网络未连通目的端.目的端安全组未开放8084端口.目的端网络ACL禁用了8084 ...

最新文章

  1. Winform、WPF、Silverlight、MFC区别与联系
  2. Java-CAS初探
  3. Java Web Start入门基础教程
  4. 巧用词语角色:基于目标自适应图的跨目标立场检测
  5. 浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别
  6. JS中的bind()方法
  7. 【操作系统】进程の易错点解答
  8. 网络编程基础--协程--greenlet切换---gevent自动识别 IO ---
  9. 英特尔AI如何帮助修缮残垣断壁的长城,背后的奥秘找到了
  10. Skype for Business 2015全新部署_07.前端安装01
  11. 这个时代再也难出现贵子
  12. 左神算法学习日记——二叉树遍历(二)
  13. Mybatis|CURD|配置详解|注解开发|多点查询|动态sql|缓存
  14. 一个好玩的辞职信HTML版
  15. 基于Ubuntu20.04 GTX960m搭建cudacunn
  16. 史无前例的这个 GitHub 汇总了 300 道 Python 面试题
  17. 电赛2019年F题纸张测量FDC2214的初始化代码(含STM32f103zet6和f103c8t6)胎教式
  18. mysql备份工具xtr,xtrbackup备份mysql与恢复
  19. kali入侵内网电脑和入侵外网电脑
  20. lankecms企业网站漏洞导致被入侵篡改跳转

热门文章

  1. 完美简单解决git和svn共用混用,或用git维护svn的问题
  2. java自定义注解实现excel数据导入导出,设置单元格数据验证与生成省市区多列联动效果
  3. GBase UP是做什么的
  4. 免费的PCB打样平台汇总,每月免费打8块板!【建议收藏】
  5. 射影几何 -- 平面射影几何 2
  6. skt7850鸿蒙策略,s5总决赛小组赛:SKT不败战绩晋级八强
  7. MPI矩阵向量乘法代码《并行程序设计导论》
  8. iOS 程序 main 函数之前发生了什么
  9. 红米Note10Pro安装twrp教程
  10. 迁移wordpress_WordPress迁移变得容易