然而,不少用户在初次尝试时却遇到了一个令人沮丧的问题:错误代码0x80070005,即“拒绝访问”
这个错误不仅让新手用户无所适从,也让一些经验丰富的系统管理员倍感困扰
本文将深入探讨这一问题的根源,并提供一系列有效的解决方案,帮助您在Windows 10上顺利启用Hyper-V
一、问题的根源 错误代码0x80070005,通常被描述为权限错误
这一错误可能发生在多种情况下,包括但不限于启动Hyper-V虚拟机、导出Hyper-V虚拟机、创建Hyper-V检查点以及将Hyper-V虚拟机复制到Hyper-V管理器中的其他目录
尽管在这些情况下用户可能会收到相同的错误代码,但错误的原因却可能各不相同
从错误消息中可以看出,操作无法执行是因为用户没有对某个文件夹或文件的权限
这主要是因为当您使用Hyper-V管理器管理Hyper-V虚拟机时,Hyper-V管理器也只具有您登录到Windows操作系统的帐户的权限
如果虚拟机位置在网络共享中,则缺少权限会对虚拟机管理非常不便
具体来说,当您启动Hyper-V虚拟机时,Hyper-V管理器需要读取虚拟磁盘等虚拟机数据,如VHD或VHDX文件
如果没有足够的权限访问这些文件夹,虚拟机将无法启动
同样,当您为Hyper-V虚拟机创建检查点时,会在文件夹中创建一个差异磁盘文件(AVHD或AVHDX文件)
如果没有权限将数据写入该文件夹,检查点操作将失败
当您导出或复制Hyper-V虚拟机时,需要复制虚拟磁盘文件,因此出于同样的原因操作也将失败
此外,这个问题也可能是由于系统错误导致的临时错误
例如,有用户反映在Windows 10专业版上首次启动Hyper-V时,尽管Hyper-V虚拟机管理(vmms)可以正常启动,但Hyper-V主机计算服务(vmcompute)却出现错误,导致Windows无法启动本地计算机上的Hyper-V主机计算服务
错误提示同样是0x80070005:拒绝访问
二、解决方案 针对上述问题,我们可以从以下几个方面入手,逐一排查并解决: 1. 更改权限 由于主要问题是权限问题,因此您应该检查和更改相关文件夹或文件的权限
有两种权限可以更改:NTFS权限和共享权限
- 更改NTFS权限:右键单击文件夹,选择“属性”,点击“安全”选项卡,然后点击“编辑”
在“选择对象类型和位置”对话框中,输入Hyper-V主机的名称,点击“检查名称”,然后点击“确定”
在“允许”下勾选“完全控制”,然后点击“应用”以更改权限
- 更改共享权限:步骤与更改NTFS权限类似
右键单击文件夹,选择“属性”,点击“共享”选项卡,然后点击“高级共享”
在“权限”选项卡中,点击“添加”,输入Hyper-V主机的名称,点击“检查名称”,然后点击“确定”
在“允许”下勾选“完全控制”,然后点击“应用”
2. 向虚拟磁盘添加SID SID是Hyper-V虚拟机ID
缺少SID也会导致虚拟机启动失败
因此,您应该将SID添加到虚拟磁盘或快照磁盘中
SID显示在错误消息中,并由虚拟机ID后的字母、数字和连字符组成
然后,打开命令提示符并运行以下命令:`icacls <.vhd或.avhd文件的路径> /grant nt virtual machine<虚拟机ID>:(f)`
请注意将`<虚拟机ID>`替换为实际的虚拟机ID
3. 不使用UNC路径 如果想要复制Hyper-V虚拟机,则不要使用在网络环境中常用的UNC路径(例如:`服务器名称共享名称目录文件名`)
您应该使用本地路径(例如:`C:Program FilesVM`)来复制文件
4. 启用控制流程保护(CFG) 在某些情况下,禁用Windows控制流程保护(CFG)可能会导致Hyper-V主机计算服务(vmcompute.exe)和虚拟机工作进程(vmwp.exe)无法正常工作,从而引发0x80070005错误
因此,您需要确保CFG已启用
您可以在Windows Defender安全中心中启用CFG
进入“应用和浏览器控制”,滚动到底部并点击“利用保护设置”,确保“控制流程保护(CFG)”默认设置为开启
如果您已经在整个系统中禁用了CFG,但需要为vmcompute.exe和vmwp.exe启用覆盖设置,您可以在Windows安全设置(SecHealthUI.exe)中进行相关配置
三、总结与预防 通过上述步骤,您应该能够解决在Windows 10上启用Hyper-V时遇到的“拒绝访问”问题
然而,为了避免类似问题的再次发生,我们还需要采取一些预防措施: - 定期检查权限: