修复更换 PCI-E 插槽后 Windows 下无线网卡的名称问题

这是一篇其实没什么逻辑也没什么技术的文章,但踩到这个坑又很头痛,所以记录一下。

我用的是一张 PCI-E 的网卡,占据一个 PCI-Ex1 的插槽,对于一个主流的 ATX 主板来说有三个选择,第二条 x16 长度的插槽上面的一个和下面的两个,由于显卡一般会插在第一条 x16 上,所以如果插在第二条 x16 长度上面的那个,会挡住一部分显卡风扇,所以我一开始插在了第二条 x16 长度插槽下面的第一个插槽。这样也是有点问题的,因为这里 x16 和 x1 之间并没有留出一个槽的空位,一般主流显卡又都是双槽的,虽然我不太可能在机箱里塞第二张显卡,但是这么装直接就干掉了这种可能性,所以我一直想把无线网卡换到最底下的插槽。(这一部分比较乱,但是装过机的直接上网搜一下主流 ATX 主板的图就能理解了。)

之前由于最后一个插槽挡板的螺丝拧的太紧我一直没换,今天买了一个柄比较粗比较省力的螺丝刀,终于拧下来螺丝把网卡换了个插槽。开机之后 Linux 下其实没什么问题,检测设备和持久化命名都正常工作了。不过 Network Manager 似乎认为更换了设备,所以建议删掉之前的连接配置重新连接网络,之后一切都正常。

切到 Windows 发现不太对劲,首先就是我的 WiFi 适配器名字变成了 WLAN 2,想要重命名成 WLAN 又提示已经存在,但是我又看不到,点进去发现它选择的无线网卡名字后面多了个 #2 的后缀,总之我也不知道怎么回事,但是强迫症觉得很难受,明明我只有一张网卡啊。

上网搜索了一下,首先是在设备管理器的查看菜单里选择显示隐藏的设备,这样就会发现一个灰色的没有后缀的网卡,我也不知道 Windows 为什么要存一个隐藏的之前存在现在不存在的 PCI-E 设备,首先按照网上的说法卸载掉这个设备然后重启,再开机就没有这个隐藏设备了。

接下来需要去掉 #2 的后缀,让 Windows 把这个插槽里的卡认成唯一的一张,这里就十分晦涩,Windows 试图隐藏起这个逻辑,但导致了一个令强迫症十分不爽的问题。我搜索了一下,发现了一个 百度文库文档 提供的方案。

首先打开注册表编辑器定位到 HKEY_LOCAL_MACHINE\SYSTEM\_ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\Descriptions 这一项,然后在右侧找到你无线网卡的名称,里面的值应该是 2,改成 1,然后卸载网卡设备,然后重启,应该就解决了,而且因为设备名字恢复了,WLAN 2 也应该变回 WLAN 了。

所以其实这篇文章并没有什么逻辑和技术,但是 Windows 自作主张非要保存一个隐藏的不存在的设备,实在是令人头痛,又没什么明显的解决方式,所以也只好记下来以防再次被恶心到。

更新:Arch Linux CN offtopic Telegram 群组里面叫 Give Way 的网友表示并不需要这么复杂,只要把两个无线网卡的设备都卸载掉重启就可以了。理论上确实是如此,但我没机会再试了,遇到相同问题的朋友可以试试。

Alynx Zhou

A Coder & Dreamer

既然看了喵写的文章,不打算投喂一下再走吗?哼!