首页 > 解决方案 > 在 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 电缆被移除时,该表被清除,然后在重新插入时重新注册条目。该表在显示“已注册”之前在状态字段中简要显示“正在注册”。

任何想法将不胜感激。

标签: windowstcpnetbios

解决方案


答案是:

https://support.microsoft.com/en-ie/help/239924/how-to-disable-the-media-sensing-feature-for-tcp-ip-in-windows

  1. 启动注册表编辑器。
  2. 找到以下注册表子项:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
  3. 将以下注册表项添加到Parameters 子项: 名称:DisableDHCPMediaSense 数据类型:REG_DWORD(布尔值) 值:1 注意此项控制媒体感应的行为。默认情况下,媒体感知事件触发 DHCP 客户端采取行动。例如,当连接事件发生时,客户端会尝试获取租约。当断开连接事件发生时,客户端可能会使接口和路由失效。如果将此值数据设置为 1,DHCP 客户端和非 DHCP 客户端将忽略媒体感知事件。
  4. 重新启动计算机。

推荐阅读