基本上是这样的:如何一劳永逸地删除所有 vEthernet(默认交换机)?
只是,我删除了 hyperV 和容器功能,结果只是 NIC 报告为已禁用。但它仍然存在。然后我重新安装了 hyperV,它创建了一个第二一个。删除已禁用的 HyperV,但没有删除第二个。
我手动将其从注册表中删除(请参阅此处的第三篇文章:https://social.technet.microsoft.com/Forums/en-US/7f18af6f-4f6b-40ac-94bc-4be32e850fb1/vethernet-default-switch?forum=win10itpronetworking) 但这并没有什么区别。
所以我的问题是,除了重置我的笔记本电脑,我怎样才能让这个愚蠢的事情消失?它搞砸了我的网络(WiFi 和以太网之间的自动切换不再起作用)
编辑:为了澄清起见,我的最终目标是(a)删除(卸载)Hyper-V 和(b)删除卸载 Hyper-V 后剩下的(现在不必要的和不需要的)Hyper-V 开关。
答案1
使用 Hyper-V 管理控制台或设备管理器(又名 devmgmt.msc)删除虚拟 NIC。不要通过注册表删除 NIC
您可以通过 PowerShell 删除虚拟交换机,如下所示:https://www.starwindsoftware.com/blog/basic-hyper-v-virtual-nic-management
另外,作为一种解决方法,您可以尝试以下步骤。https://social.technet.microsoft.com/Forums/windows/en-US/e49df568-4f4c-47b7-b30c-952d1e26ca58/cant-remove-failed-virtual-switch-from-hypervs-virtual-switch-manager
答案2
尽管投票结果不佳,我找到了一个明确的解决方案。[注意微软的回应] 我的解决方案有效,即使启用了 Hyper-V。我们中的许多人都不想禁用 Hyper-V 安全性,而且这里其他任何方法在 Windows 10 2004 上都不起作用,重新启动时所有内容都会被替换,甚至包括增加攻击面的 netbios 设置,而且每次配置数百个适配器都很麻烦。即使使用绑定所有设置都会在重启时恢复。彻底禁用这些适配器的一种方法是禁用DNScache
akaDns Client
服务并使用第三方 DNS 服务,例如丙烯酸纤维, 或者SimpleDNSCrypt。请务必仔细检查 Acrylics 配置,因为最初您的默认 DNS 提供商将自动设置为 google 或 cloudflare。然后将 Acrylic 指向您的路由器 IP 或首选 DNS 服务器,并将所有适配器的 DNS 设置设置为127.0.0.1
。
您必须使用 regedit 禁用 DNSCache,如下所示:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache
设置start to 4
,然后重新启动。
唯一的小问题是,您可能会看到单个适配器不断短暂地出现和消失,Control Panel\Network and Internet\Network Connections
并且每次尝试安装适配器时,设备管理器窗口都会不断刷新。在我启用 DNSCache(在我最初开始使用 Hyper-V 之前已禁用)然后再次禁用它之后,这个问题似乎已经消失。另一个警告是,最初加载 Windows 商店时,您会收到一个错误,除非您之前已在启用 DNScache 的情况下打开商店。此后,除非您重置它,否则商店将无限期地工作。考虑到这有多烦人,这并不是什么大问题,这实际上是有效的。
答案3
我想我已经解决了。我删除了这两个键下的所有条目:
HKLM\SYSTEM\CurrentControlSet\Services\VMSMP\Parameters\NicList HKLM\SYSTEM\CurrentControlSet\Services\VMSMP\Parameters\SwitchList
然后重新启动。我应该指出,这显然是核选项。
编辑:正如评论中提到的,如果我记得设备管理器是一个东西,设备管理器可能也会起作用。
答案4
每当发生任何交换机更改时,此计划任务应禁用 Hyper-V 默认交换机:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2022-05-01T00:00:00.0000000</Date>
<Author>Hyper-V Default Switch Disabler</Author>
<URI>\Disable Hyper-V Default Switch</URI>
</RegistrationInfo>
<Triggers>
<BootTrigger>
<Enabled>true</Enabled>
</BootTrigger>
<LogonTrigger>
<Enabled>true</Enabled>
</LogonTrigger>
<EventTrigger>
<Enabled>true</Enabled>
<Subscription><QueryList><Query Id="0" Path="Microsoft-Windows-Hyper-V-VmSwitch-Operational"><Select Path="Microsoft-Windows-Hyper-V-VmSwitch-Operational">*[System[Provider[@Name='Microsoft-Windows-Hyper-V-VmSwitch'] and EventID=220]]</Select></Query></QueryList></Subscription>
</EventTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>S-1-5-18</UserId>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>Parallel</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</Command>
<Arguments>-Command "&{ Disable-NetAdapter -Confirm:$false -Name 'vEthernet (Default Switch)' }"</Arguments>
</Exec>
</Actions>
</Task>
不幸的是我不知道该怎么做删除通过命令行/PowerShell 连接到设备。我知道可以通过以下方式实现映射:
$(Get-PnpDevice | Where-Object{$_.Name -eq $(Get-NetAdapter -Name 'vEthernet (Default Switch)')[0].InterfaceDescription})[0].InstanceId
然后必须从设备管理器中删除 InstanceId。