在 Windows 10 上移除 LAN 电缆时,NetBios 堆栈被清除

NetBios stack gets cleared when removing LAN cable on Windows 10

我有一个用 C++ 编写的古老组件,它使用 netbios 通过网络适配器迭代到 return 它们的 MAC 地址。

在 windows 7 下一切正常,但自从我们移动到 windows 10 后,当 LAN 电缆被移除时,代码无法检索 MAC 地址,一切正常已连接 LAN 电缆。

在 Windows 7 上,当我使用 nbtstat -n 时,在连接或断开 LAN 电缆的情况下,我得到了预期的 netbios 列表。在 Windows 10,我得到了连接了 LAN 电缆的预期列表,但是当 LAN 电缆被移除时,列表是空的。

我查看了电源设置并检查了 TCP/IP 的 netbios 是否已打开,一切正常。

不幸的是,该组件无法重新编译,因为它太旧了,我们的构建机器已不存在。

当没有连接 LAN 电缆时,我需要一种方法让 NetBios 在 Windows10 上运行。目前似乎发生的是当 LAN 电缆被移除时 table 被清除,然后当它被重新插入时条目被重新注册。 table 短暂地显示 'registering' 在显示 'registered'.

之前的状态字段

如有任何想法,我们将不胜感激。

答案是:

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 子项: 名称:禁用 DHCPMediaSense 数据类型:REG_DWORD(布尔值) 值:1 注意 此条目控制媒体感知的行为。默认情况下,媒体感知事件触发 DHCP 客户端采取行动。例如,当发生连接事件时,客户端会尝试获取租约。当发生断开连接事件时,客户端可能会使接口和路由失效。如果将此值数据设置为 1,DHCP 客户端和 non-DHCP 客户端将忽略媒体感应事件。
  4. 重新启动计算机。