背景
买电脑送的正版win10家庭版,闲的没事找了个win10专业版的激活码,添加功能成功后,却显示未激活。激活后,直接成了企业版 [手动笑哭]
故事内容
1.白嫖win10专业版失败
背景是简单写了一下
一个朋友闲的没事干,到网上搜了一个win10专业版激活码,结果激活成功了。我就要来激活码,成功识别,显示需要重启增加功能。我就把设置放到了其他桌面,打算稍后重启更新。放心,激活码没用了,需要的可以尝试激活工具“大法”。激活码失效也是我翻车的原因。
稍后重启更新是没有任何问题。但添加完功能后,莫名弹出了未激活的提示,直接翻车了(应该是激活次数被用完了吧)。当时因为着急,也没来得及截图。
2.尝试用激活工具解决问题
3.作死部分 打开hyper-v
本来是家庭版,看到早以前所谓的hyper-v虚拟机,很好奇。升级企业版后在Windows功能中,启用了此功能。hyper-v用了个寂寞,virtualbox(以下简称“vbox”)的虚拟机也打不开了,报错0x80004005
……
完整报错是这样的
Call to WHvSetupPartition failed: ERROR_SUCCESS (Last=0xc000000d/87) (VERR_NEM_VM_CREATE_FAILED).
返回 代码: E_FAIL (0x80004005)
组件: ConsoleWrap
界面: IConsole {872da645-4a9b-1727-bee2-5585105b9eed}
4.解决vbox 0x80004005报错
具体的我也无法说明哪一步有效,哪一步无效;有兴趣的可以自行尝试。如果我的方法不对症,请自行查阅其他资料。我已经把很多方法综合了。
分析
首先想到是vbox和hyper-v冲突。结果说明的确这样。
先看一张图,表示vbox和hyper-v的工作原理不同。这说明了导致冲突的原因:
一个不对症的方法
之后,搜索报错信息,看到了一篇文章,大意是没有打开对应功能,给出了如下操作:
这只是导致此报错的原因之一。请注意,我并没有说明此方法没用,只是没有对症而已。
我的两个功能本来就开着,所以我直接略过。
最基本的操作
我在控制面版直接将hyper-v关闭,重启,问题仍然没有解决
尝试兼容运行模式
之后,又尝试这个方法,但此方法仅支持vbox6.0及以上版本,可以暂时性解决。我这么说的原因是使用该方法后,我碰到另外一个问题:显示效果极差。而且,仅仅是vbox问题解决,安卓模拟器问题并没有解决。
这个方法值得一试,不知是否适合。我同样写在这里:
1.打开vbox目录,确认有
VBoxManage.exe
2.管理员身份(为防止兼容性问题)启用cmd或Windows Powershell,并cd到安装目录(不会的百度)
注意:cmd和Windows Powershell的命令有细微差别。Windows Powershell需要加\.
和.exe
3.如果碰到和我类似的问题,可以将其关闭。直接将参数0替换成1就好。
cmd部分
对指定虚拟机启用:
1 | VBoxManage setextradata "<虚拟机名字>" "VBoxInternal/NEM/UseRing0Runloop" 0 |
对所有虚拟机启用:
1 | VBoxManage setextradata global "VBoxInternal/NEM/UseRing0Runloop" 0 |
Windows Powershell部分
对指定虚拟机启用:
1 | ./VBoxManage.exe setextradata "<虚拟机名字>" "VBoxInternal/NEM/UseRing0Runloop" 0 |
对所有虚拟机启用:
1 | ./VBoxManage.exe setextradata global "VBoxInternal/NEM/UseRing0Runloop" 0 |
使用cmd命令行关闭
想到可能是没有彻底关闭(应该不会吧。。。就试试),尝试采用命令行操作。
管理员身份运行cmd,输入对应命令
关闭hyper-v:
1 | bcdedit /set hypervisorlaunchtype off |
同时附上开启命令:
1 | bcdedit /set hypervisorlaunchtype auto |
停止服务
在service中,把和hyper-v有关的服务全部停用。
如图所示:
建议直接停用
停用virtualization based security(强烈建议先尝试这一步)
1.在Windows功能中,取消hyper-v的勾选。如果为关闭状态,无需重复。
这里,我说一句,我因各种尝试无效,我打算先打开,重新关闭一次,看到这个文章。我没有关闭后先重启,导致开机时自动恢复。所以先按照一般方式,先重启
2.管理员身份启动cmd,运行以下命令(作用是“关闭”hyper-v,加引号是因为这种方法不彻底,要不就没这么麻烦了…… )如果执行过,建议再执行一次,以防有变动)。之后重启
1 | bcdedit /set hypervisorlaunchtype off |
3.最关键的一步
一定注意:此步骤先看完再尝试,要不重启后不知道该如何操作就尴尬了
管理员身份运行cmd,执行以下命令。
1 | mountvol X: /s |
此处特别说明:X是指一个没有被占用的盘符。可以修改成其它满足要求的盘符,但是所有地方都必须对应。
重启后,会进入一个界面。这是关闭virtualization based security的界面。一直按win
或者F3
,直到界面自动退出即可。
对我来说,至此,vbox报错信息以完全解决。
但还有其他问题。。。
5.解决安卓模拟器的问题
我使用的,是逍遥安卓模拟器(以下简称“模拟器”)
再进行一系列操作后,打开模拟器后,提醒hyper-v开启,无法运行。这比vbox好,起码给你自动修复,虽然还有后遗症。
进行了自动修复流程,重启电脑,模拟器的问题成功解决。
6.再次解决vbox问题
模拟器的问题成功解决,但vbox又回到了刚才的问题。
这次解决起来比上次简单多了。不存在乱七八糟的情况。刚才那个“不对症的方法”现在正适合。具体操作看图:
7.结果
至此,此问题现在来看已经完全解决。
一个问题本来20分钟就能解决,走各种弯路(因为好多次查到的都是一样的对我来说无效的方法),变成了需要几个小时。因为某些原因,解决问题的事拆成了4天的零碎时间……
推荐
还有一些水文,放在csdn上,可以看看
质数口袋c/c++版
runtime error的常见原因及解决办法