3

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

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

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

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

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

欢迎提出建议,谢谢!

===== 编辑 #1

尝试 WMI 查询“Select * From Win32_NetworkAdapter Where NetConnectionID = 'Local Area Connection'”——反馈中没有 IP 地址,尽管我可以在控制面板连接属性中看到它。

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

4

1 回答 1

0

我最终使用:

  • “Select * From Win32_NetworkAdapter Where PhysicalAdapter='True' AND AdapterTypeID=0”查询以列出适配器/连接名称/guid - 效果很好
  • 注册表通过 guid 读取配置
  • netsh 通过连接名称进行配置。是的,我在语言环境方面玩得很开心。

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

于 2013-09-20T08:24:47.357 回答