我正在为 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 的查询根本不返回任何内容。