如何在命令行中禁用Hyper-V?

149

我想打开VMware,但它显示VMware Player和Hyper-V不兼容。我在这里找到了解决方法,但使用它所提供的命令没有起作用。

我尝试查看帮助,发现有一个/hypervisorsettings选项。但是即使使用它,仍然无法正常工作,显示“参数不正确”。

有人能帮忙吗?


5
我在这里找到了一个有效的方法:dism.exe /Online /Disable-Feature:Microsoft-Hyper-Vdism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All,但仍然不知道 bcdedit 如何工作。 - Sky
这个链接(https://pswalia2u.medium.com/fully-disable-hyper-v-to-turn-back-to-vmware-virtualbox-159812bee71a)对我很有用。对于企业用户,此解决方案将在重新启动时触发 BitLocker,请注意! - user10838321
12个回答

355

在提升的命令提示符中写入以下内容:

要禁用:

bcdedit /set hypervisorlaunchtype off

启用:

bcdedit /set hypervisorlaunchtype auto 

重新启动以生效。


我甚至忘记了这个问题。当时我用过它,但它没有起作用。不管怎样,现在它可以工作了。谢谢。 - Sky
5
如果你不需要特别使用命令行解决方案,而只是希望使用非常简单快速的工具,可以尝试使用我的工具Hyper-V Switch,它在内部使用bcdedit方法,并提供了一个一键式GUI。在我的Windows 10电脑上可用。 - ygoe
在Windows 10 1607上运行良好。 - Quanlong
在Win 10 (1803)上工作过,尽管我不知何故不得不重新启动两次。 - Alexander Kim
对我而言,即便在卸载了Windows功能中的Hyper-V后仍然无法解决问题。我还不得不卸载Windows功能中的Internet Explorer 11。 - Dennis
auto并不起作用。你必须激活沙盒才能让Android工作,例如WSA。 - Валерий Заподовников

45

您可以在管理员提示符下执行以下操作,配置带有或不带有Hyper-V的Windows 10:

bcdedit /copy {current} /d "Windows 10 no Hyper-V"

查找刚创建的“Windows 10无Hyper-V”启动项的新ID。

要查找新ID,请键入“bcdedit”,然后在添加的引导加载程序配置中查找标识符{XXX}。例如:{094a0b01-3350-11e7-99e1-bc5ec82bc470}

bcdedit /set {094a0b01-3350-11e7-99e1-bc5ec82bc470} hypervisorlaunchtype Off

重新启动后,您可以在启动时选择使用或不使用Hyper-V的Windows 10


2
如果您在 PowerShell 上运行此命令,请确保将 {current}{GUID} 放在 " " 中,例如:"{current}" - Nicke Manarin

31

这个命令有效。

Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All

在提示时运行它,然后同意重新启动计算机。

我使用Windows 10上的提升权限PowerShell运行它,但它也应该适用于Win 8或7。


3
可以不重启计算机就达到这个目的吗? - rustyx
再通过 cmd 重新启用 Hyper-V 怎么样?谢谢! - statosdotcom
6
此命令将完全删除HyperV功能及其文件和程序。最好使用bcdedit命令禁用它,并改用VirtualBox或VMware。 - user8350477
我的Hyper-V安装无缘无故地出了问题(我正在运行Windows 10 Pro v1703 build 15063.786)。我尝试通过Windows功能菜单、Powershell和DISM进行(卸载/重新)安装,它们都没有报错,但是当我尝试创建/添加新的虚拟机并想完成最后一步时,Hyper-V会抛出一个错误,因为某个对象似乎不存在而无法打开/访问某些内容(荷兰语截图):https://i.imgur.com/07hem57.png 当以提升的/管理员权限运行时,情况也是如此。显然,无法完全恢复/修复Hyper-V产品/模块... - script'n'code

20

命令行:

dism /online /disable-feature /featurename:microsoft-hyper-v-all

如果有人在尝试禁用 Hyper-V 后遇到以下情况:

我们无法完成更新,正在撤消更改

请尝试从设备管理器 -> 网络适配器中卸载 Hyper-V 虚拟网络适配器。


这会导致Windows更新失败,感谢提供信息。 - Benny
它为我绕过了Windows更新失败的部分。 - Rusty
谢谢,从命令行修复Windows成功了。 - Ghafoor

8

以管理员身份打开命令提示符并运行以下命令:

bcdedit /set {current} hypervisorlaunchtype off

重新启动计算机后,Hyper-V仍然安装在计算机上,但是虚拟机管理程序已经停止运行。现在您可以无障碍地使用VMware。

如果您需要再次使用Hyper-V,请以管理员身份打开命令提示符并运行以下命令:

bcdedit /set {current} hypervisorlaunchtype auto

2
使用 bcdedit /set {current} ...bcdedit /set ... 有什么区别/优势吗? - mwfearnley
现在由于这个命令,Windows 10在启动时卡住了。我该怎么办? - user2284570

4

以管理员身份打开命令提示符并输入:

bcdedit /set hypervisorlaunchtype off

现在由于这个命令,Windows 10在启动时卡住了。我该怎么办? - user2284570

3

楼主的答案对我来说是最好的,而且其他人似乎也已经理解了-All的添加方式。我设置了两个批处理文件,然后创建了这些文件的快捷方式,这样你就可以在它们上面设置“以管理员身份运行”的权限,非常简单。

批处理关闭

Call dism.exe /Online /Disable-Feature:Microsoft-Hyper-V-All

批处理开启

Call dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

右键单击 -> 创建桌面快捷方式。 右键单击快捷方式 -> 属性 -> 在快捷方式选项卡下 -> 高级 -> 以管理员身份运行


1
你可以使用我的脚本。 将代码行粘贴到记事本中,并另存为vbs文件(例如switch_hypervisor.vbs)。
Option Explicit

Dim backupfile
Dim record
Dim myshell
Dim appmyshell
Dim myresult
Dim myline
Dim makeactive
Dim makepassive
Dim reboot
record=""
Set myshell = WScript.CreateObject("WScript.Shell")

If WScript.Arguments.Length = 0 Then
    Set appmyshell  = CreateObject("Shell.Application")
    appmyshell.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ RunAsAdministrator", , "runas", 1
    WScript.Quit
End if




Set backupfile = CreateObject("Scripting.FileSystemObject")
If Not (backupfile.FileExists("C:\bcdedit.bak")) Then
    Set myresult = myshell.Exec("cmd /c bcdedit /export c:\bcdedit.bak")
End If

Set myresult = myshell.Exec("cmd /c bcdedit")
Do While Not myresult.StdOut.AtEndOfStream
    myline = myresult.StdOut.ReadLine()

    If myline="The boot configuration data store could not be opened." Then
        record=""
        exit do
    End If
    If Instr(myline, "identifier") > 0 Then
        record=""
        If Instr(myline, "{current}") > 0 Then
            record="current"
        End If
    End If
    If Instr(myline, "hypervisorlaunchtype") > 0 And record = "current" Then
        If Instr(myline, "Auto") > 0 Then
            record="1"
            Exit Do
        End If
        If Instr(myline, "On") > 0 Then
            record="1"
            Exit Do
        End If
        If Instr(myline, "Off") > 0 Then
            record="0"
            Exit Do
        End If
    End If
Loop

If record="1" Then
    makepassive = MsgBox ("Hypervisor status is active, do you want set to passive? ", vbYesNo, "Hypervisor")
    Select Case makepassive
    Case vbYes
        myshell.run "cmd.exe /C  bcdedit /set hypervisorlaunchtype off"
        reboot = MsgBox ("Hypervisor chenged to passive; Computer must reboot. Reboot now? ", vbYesNo, "Hypervisor")
        Select Case reboot
            Case vbYes
                myshell.run "cmd.exe /C  shutdown /r /t 0"
        End Select
    Case vbNo
        MsgBox("Not Changed")
    End Select
End If

If record="0" Then
    makeactive = MsgBox ("Hypervisor status is passive, do you want set active? ", vbYesNo, "Hypervisor")
    Select Case makeactive
    Case vbYes
        myshell.run "cmd.exe /C  bcdedit /set hypervisorlaunchtype auto"
        reboot = MsgBox ("Hypervisor changed to active;  Computer must reboot. Reboot now?", vbYesNo, "Hypervisor")
        Select Case reboot
            Case vbYes
                myshell.run "cmd.exe /C  shutdown /r /t 0"
        End Select
    Case vbNo
        MsgBox("Not Changed")
    End Select
End If

If record="" Then
        MsgBox("Error: record can't find")
End If

2
通常情况下,当回答一个问题时,应该尝试解释代码片段的作用/工作原理。 - Sebastian Lenartowicz
1
@SebastianLenartowicz 对我来说看起来很简单明了。该脚本只会将 hypervisorlaunchtype 设置为自动或关闭,并通过 bcdedit 命令导出当前设置。 - user797717

1
这不是对原帖问题的直接回答,但如果你已经尝试了所有命令,Hyper-V显示为禁用状态,BUT仍然无法启动虚拟化软件(如VirtualBox或VMware),并且碰巧你已经在机器上启用了WSL2,那么下面的解决方案可能适用于你。
进入"控制面板">"程序和功能">"打开或关闭Windows功能"
这里有个要点,以下三项都应该被禁用/取消勾选。
- 虚拟机平台 - Windows超级视觉效果平台 - Windows子系统Linux
重新启动!

0

我是用以下方法解决的:

1. bcdedit /set hypervisorlaunchtype off enter image description here

结果 [失败!]

2. bcdedit /set {872da645-4a9b-1727-bee2-5585105b9eed} hypervisorlaunchtype Off

enter image description here

结果 [失败!]

3. 禁用-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All

enter image description here

结果 [失败!]

错误在于我没有以管理员身份登录命令提示符,因此以上所有步骤都[失败!]

应该是这样的:

1. 打开Windows搜索 输入图像描述

2. 搜索cmd 输入图像描述

3. 右键单击命令提示符 输入图像描述

4. 单击以管理员身份运行

5. 输入cmd bcdedit /set hypervisorlaunchtype off 在此输入图片描述

然后看到已经 [成功√]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接