windows - 在 Windows 10 上移除 LAN 电缆时,NetBios 堆栈被清除
问题描述
我有一个用 C++ 编写的古老组件,它使用 netbios 遍历网络适配器以返回其 MAC 地址。
在 windows 7 下一切正常,但由于我们移至 windows 10,当 LAN 电缆被移除时,代码无法检索 MAC 地址,在连接 LAN 电缆的情况下一切正常。
在 Windows 7 上,当我使用 nbtstat -n 时,在连接或断开 LAN 电缆的情况下,我得到了预期的 netbios 列表。在 Windows 10 上,我得到了连接 LAN 电缆的预期列表,但当 LAN 电缆被移除时,我得到了一个空列表。
我查看了电源设置并检查了 TCP/IP 的 netbios 是否已打开,一切看起来都很好。
不幸的是,该组件无法重新编译,因为它太旧了,而且我们的构建机器不再存在。
当没有连接 LAN 电缆时,我需要一种方法让 NetBios 在 Windows 10 上运行。当前似乎发生的情况是,当 LAN 电缆被移除时,该表被清除,然后在重新插入时重新注册条目。该表在显示“已注册”之前在状态字段中简要显示“正在注册”。
任何想法将不胜感激。
解决方案
答案是:
- 启动注册表编辑器。
- 找到以下注册表子项:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
- 将以下注册表项添加到Parameters 子项: 名称:DisableDHCPMediaSense 数据类型:REG_DWORD(布尔值) 值:1 注意此项控制媒体感应的行为。默认情况下,媒体感知事件触发 DHCP 客户端采取行动。例如,当连接事件发生时,客户端会尝试获取租约。当断开连接事件发生时,客户端可能会使接口和路由失效。如果将此值数据设置为 1,DHCP 客户端和非 DHCP 客户端将忽略媒体感知事件。
- 重新启动计算机。
推荐阅读
- java - 创建一个空列表
基于泛型 - excel - GetValueInvocationException 从 Excel 电子表格中读取单元格
- php - 如何将额外的畅销产品添加到 Storefront 主题 Woocommerce?
- python - QLineEdit 返回空字符串
- mongodb - 查找多个日期时间对象之间的平均时间 mongodb
- jenkins - 在 Jenkins 中以编程方式删除视图
- python - '%.*g' % (6,k) 如何在 python 中工作
- c - UTF-8 字符计数在 C 中不正确
- heroku-cli - heroku cli报告系统找不到Win 10上指定的路径
- restlet - 添加代理到restlet ClientRessource