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

Listing all Network Connections, then managing one

本文关键字:管理 一个 然后 网络 连接      更新时间:2023-10-16

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

为了简化用户体验,我需要以下方案:

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

我遇到的问题是以下几种情况的混合:

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

欢迎提出建议,谢谢!

===

== 编辑 #1

尝试 WMI 查询"从 NetConnectionID = '本地连接'Win32_NetworkAdapter中选择 *"——反馈中没有 IP 地址,尽管我可以在控制面板连接属性中看到它。

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

我最终使用了:

  • "从物理适配器='真'和适配器类型ID=0 Win32_NetworkAdapter中选择*"查询以列出适配器/连接名称/guid - 效果很好
  • 注册表以通过 GUID 读取配置
  • netsh 通过连接名称进行配置。是的,我对语言环境很感兴趣。

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

相关文章: