列出所有网络连接,然后管理一个

时间:2013-09-18 09:26:01

标签: c++ windows networking network-programming

我正在使用C ++ for Windows 7开发一个应用程序,该应用程序设置TFTP服务器以与嵌入式设备进行通信。该设备应该直接连接到以太网端口,它需要一个TFTP服务器在192.168.1.19静态地址。

为了简化用户体验,我想要以下场景:

  • 显示系统中向用户注册的所有网络连接的列表(与“控制面板\网络和Internet \网络连接”中的列表相同)
  • 允许选择一个连接
  • 记住其IPv4配置
  • 将IPv4配置设置为192.168.1.19和255.255.255.0
  • 完成TFTP作业后,恢复原始IPv4配置

我遇到的问题是以下各项的混合:

  • 当没有以太网电缆插入时,GetAdaptersInfo,GetInterfaceInfo,GetAdaptersAddresses都没有列出我感兴趣的连接;
  • 即使我得到了那个连接,我也不确定使用哪个API来设置DHCP开/关,静态IP,网络掩码。
  • 我尝试使用netsh,它工作正常,但我不想从我的应用程序运行它,因为我不想处理连接名称中的非英文字符。

欢迎提出建议, 谢谢!

=====编辑#1

尝试WMI查询“选择*来自Win32_NetworkAdapter,其中NetConnectionID ='本地区域连接'” - 反馈中没有IP地址,但我可以在控制面板连接属性中看到它。

涉及Win32_NetworkConnection的查询根本不返回任何内容。

1 个答案:

答案 0 :(得分:0)

我最终使用了:

  • “选择*从Win32_NetworkAdapter,其中PhysicalAdapter ='True'AND AdapterTypeID = 0”查询列出适配器/连接名称/ guid - 效果很好
  • 通过guid读取配置的注册表
  • netsh通过连接名称进行配置。是的,我对语言环境很开心。

坦率地说,我没有找到更可靠的方法来处理断开的连接。希望这可以帮助。如果有人有更好的解决方案 - 我很高兴见到他们!