列出所有网络连接,然后管理一个
Listing all Network Connections, then managing one
我正在为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 通过连接名称进行配置。是的,我对语言环境很感兴趣。
坦率地说,我没有找到更可靠的方法来处理断开连接的连接。希望这有帮助。如果有人有更好的解决方案 - 我很高兴看到他们!
相关文章:
- 当分配一个字符串值并稍后通过分配另一个值进行更改时C++如何管理内存?
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- 如何在Qt中管理另一个窗口?
- 是否可以在专用内存空间中分配一个为提升管理共享内存而创建的对象
- 如果我的类正确地管理了一个资源,那么拥有智能的poointer有什么意义
- 如何将指针从unique_ptr传递到另一个对象并管理寿命
- 如何设计一个安全地管理自己一生的Qobject
- 如何创建一个新过程,而没有从管理模式运行的MFC应用程序中的管理特权
- 在Qt中管理一个只有头的库的项目
- 内存管理:返回一个向量元素并删除(pop_back)它
- 当动态创建一个包含另一个动态创建的结构数组的结构数组时,内存管理
- 当只剩下一个引用时,删除shared_ptr管理的对象
- C++内存管理:从函数中的向量创建一个新数组
- 自定义内存管理,用于在文件中每行创建一个对象
- 利用数据结构在C++上实现了一个图书馆管理系统
- 删除由两个shared_pointer实例管理的对象(删除其中一个)
- 如何在一个向量中管理基类实例和派生类实例
- 是否可以让一个应用程序配置和管理 DirectShow 筛选器,但将输出引脚绑定到另一个应用程序
- 列出所有网络连接,然后管理一个
- IDE,框架,代码管理器工具,在一个项目中支持Java和C++的东西