A Mirror的博客

不许说话不许笑 [手动滑稽]

0%

拿win10作死的故事

背景

买电脑送的正版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
2
3
4
5
6
7
8
mountvol X: /s
copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
mountvol X: /d

此处特别说明:X是指一个没有被占用的盘符。可以修改成其它满足要求的盘符,但是所有地方都必须对应

重启后,会进入一个界面。这是关闭virtualization based security的界面。一直按win或者F3,直到界面自动退出即可。

对我来说,至此,vbox报错信息以完全解决。
但还有其他问题。。。

5.解决安卓模拟器的问题

我使用的,是逍遥安卓模拟器(以下简称“模拟器”
再进行一系列操作后,打开模拟器后,提醒hyper-v开启,无法运行。这比vbox好,起码给你自动修复,虽然还有后遗症
进行了自动修复流程,重启电脑,模拟器的问题成功解决。

6.再次解决vbox问题

模拟器的问题成功解决,但vbox又回到了刚才的问题

这次解决起来比上次简单多了。不存在乱七八糟的情况。刚才那个“不对症的方法”现在正适合。具体操作看图:

7.结果

至此,此问题现在来看已经完全解决。
一个问题本来20分钟就能解决,走各种弯路(因为好多次查到的都是一样的对我来说无效的方法),变成了需要几个小时。因为某些原因,解决问题的事拆成了4天的零碎时间……

推荐

还有一些水文,放在csdn上,可以看看
质数口袋c/c++版
runtime error的常见原因及解决办法

感谢您的支持!