在 Windows 10 下,即使不安装 Hyper-V 程序,其服务也开启了。这就造成使用 VMWare 安装 x64 的 Centos 时提示 CPU 未开启虚拟化,实际上已开启。我用过 bcdedit /set hypervisorlaunchtype off 命令想关闭 Hyper-V 服务但是无效。
请问有什么办法?

一、我不知道为什么用楼主的方法没有解决
我是这样解决的,和楼主的差不多,区别在于没有加引导:

  • 以管理员身份运行命令提示符
  • 执行命令
bcdedit /set hypervisorlaunchtype off 
  • 重启,运行vm即可
    如果想要恢复hyper启动
bcdedit /set hypervisorlaunchtype auto

二、

更新一下,因为原先回答中的方法在升级1803之后发现不够准确。

我原以为我找到了捷径,最后还是需要用bcdedit来关掉,惭愧。这样和其他回答差不多了,不过我想补充点我踩到的坑。

我的系统环境是windows 10 专业版,升级1803之后停止服务的方法不好使了,于是我就从控制面板-程序-启用或关闭windows功能里卸载掉了(好像还“bcdedit /set hypervisorlaunchtype off”了一下,这里记不清了),才能正常使用mumu模拟器,否则mumu启动就蓝屏。当时没纠结,只认为系统更新之后失效了。最近开始用docker for windows,它要用hyper-V,又碰到了这个问题,折腾了一下,顺便更新下回答,以免误导大家。

我在win10上经常使用VMware,VirtualBoxGenymotion(安卓开发用的模拟器,基于VirtualBox),一些游戏用的安卓模拟器,比如mumu等。

这些程序的共同点就是与win10自带的hyper-V冲突,如果想用这些程序就需要把hyper-V卸掉,或者关闭,关闭方法其他回答中提到了,就是在cmd里运行bcdedit /set hypervisorlaunchtype off。

运行bcdedit可以看到hypervisorlaunchtype的状态,有off和auto,没有on,如果开启需要运行bcdedit /set hypervisorlaunchtype auto。启用之后应该要重启一下才能起效,亲身试验设为auto之后不重启docker for windows也启动不了。而“Hyper-V虚拟机管理”服务还是改成手动比较好,否则mumu会提示hyper-V未关闭,docker for windows启动时也能把服务启动。

img

我之前认为停止“Hyper-V虚拟机管理”服务起作用可能是因为先参照其他回答执行了bcdedit /set hypervisorlaunchtype off导致的。当时hyper-V的服务仍开机自动运行,mumu模拟器可以启动但是提示Hyper-V未关闭,而停止服务之后mumu模拟器提示没了。我只认为是停止服务起的作用,忽略了hypervisorlaunchtype设置为off的操作。也许是后来系统更新让hypervisorlaunchtype变了auto,mumu直接蓝屏。所以为了让mumu模拟器可以正常使用,这两部分都必不可少。(至于off前后mumu什么表现让我认为off没用实在记不清了)

我简单测试了下,VMware和VirtualBox不需要停止服务。而只开启服务,没有把hypervisorlaunchtype设为auto并重启,docker for windows启动不了。

  • VMware、VirtualBox(包括Genymotion):hypervisorlaunchtype off
  • mumu:hypervisorlaunchtype off(否则蓝屏)、服务停止(否则提示hyper-V未关闭)
  • docker for windows:hypervisorlaunchtype auto、服务可以自启动

如果不想每次都开启关闭可以运行bcdedit /copy {current} /d "Windows10 no Hyper-V"复制当前的启动项为一个新的启动项,然后安装hyper-V,这样就有两个启动项,一个有hyper-V,一个没有。在开机时可以选择。

我之前回答中说运行bcdedit /copy {current} /d "Windows10 no Hyper-V"这条命令出错,是因为在powershell中运行的,可能是因为识别不了{}导致出错。在cmd里是好使的。

img

但是要注意,这是在没有安装hyper-V时候执行的,{current}的hypervisorlaunchtype是off。如果你已经安装了hyper-V,或者hypervisorlaunchtype是auto,那么你在复制启动项的时候要注意哪一个启动项是要开启hyper-V的,“Windows10 no hyper-V”是新启动项的描述,有没有no不要弄混了。在执行之后会得到新启动项的标识符,如果修改当前启动项,可以用bcdedit /set hypervisorlaunchtype off,如果修改非current启动项,则需要指明标识符,bcdedit /set {标识符} hypervisorlaunchtype off


现在已经2018年了,我的win10是新安的1709专业版,算是目前最新的吧。

因为安装mumu模拟器遇到此问题,它给的方法是在Windows功能里把Hyper-V的功能勾掉,和第一个答案一样,但是我操作之后重启遇到“user profile service 无法加载用户配置文件”,虽然还是能进入桌面,但这个方法让我蛋疼,一是出现了不知原因的问题,一闪而过,不知道有没有有没有其他影响,会不会留下什么bug,二是如果我想用hyper-V的时候还得重新装,用模拟器还得取消,很麻烦。

其他答案里用bcd的,“bcdedit /copy {current} /d "Windows10 no Hyper-V"”,这条命令我执行不了。

bcdedit /set hypervisorlaunchtype off 执行成功了,但是重启Hyper-V并没有关闭。

最后我发现只要在“计算机管理-服务”里把“Hyper-V虚拟机管理”服务改为手动并停止就行了,顺便确保其他Hyper-V的服务已停止(其他的服务默认都是手动(触发器启动),除了“Hyper-V主机计算服务”都是停止的,把它也停了就行了),然后安装模拟器就没有问题了,用VMwareWorkstation14安装Ubuntu也没有问题。

需要Hyper-V的时候把它启动就行了,如果不启动Hyper-V管理器无法连接本机服务器。

img

三、

背景:

win10

hyper-v照着其他答案已经关闭

bcdedit查看状态显示off

开机选择no hyper-v

但是依然启动任何安卓模拟器蓝屏,其他软件提示我处于虚拟机环境

苦恼几个月,直到在贴吧看见一位大佬的回答:win10下,把内核隔离关闭。

具体步骤:打开windows defender安全中心,左边选项"设备安全性",关闭内核隔离然后重启,困扰我几个月的问题就解决了

希望能帮到和我类似状况的人

转自知乎

标签: none