近日我在整理Hyper-V下虚拟机环境时,有时会出现虚拟机无法启动的现象,(后来才发现这种现象其它朋友也时有发生,故把我的解决思路写下来和各位分享)如下图所示:

 

从给出的提示,应该是访问权限问题,我查看虚拟机文件夹的NTFS的安全权限,如下所示:

从上分析,该文件夹,对于System和administrators组成员均是Full Control的权限,对于users组成员是读取权限,而当前登录用户是管理员组成员,权限理应够了,但又为什么提示权限不够,仔细查看上面的错误提示:"无法读取或更新虚拟机配置"。至于读权限肯定没有问题,但对于更新虚拟机配置的权限估计管理员也未必可以。于是打开虚拟机的配置,仔细查看,如下:

呵呵,没有任何收获,还是打开Service管理控制台,查看Hyper-V的服务进程,看一看到底是以什么用户权限运行的,如下:

发现全部以SYSTEM用户身份,并查看相对应的依赖服务,特别我看到了Hyper-V的网络管理服务,依赖于RPC服务,而RPC服务需要network Service这个用户账号:

马上行动,赋予那个文件夹权限如下:

重新启动虚拟机,已经成功启动。如下所示:

分析原因:在VM启动过程中要检查虚拟机配置,而配置中有相关的网络设置,而Hyper-V网络管理服务要调用相应的服务组件(如RPC等),这个过程必须要有读写的权限,而直接操作的用户便是Network Service,管理员也没有这个权限。如果你查看刚创建的虚拟机文件夹,你会发现,默认情况下已经赋予Authenticated Users组成员具有读写权限了(而Network Service用户是该组成员),当然可以启动虚拟机了。因此默认情况只要你不修改该文件夹的NTFS的安全权限,启动虚拟机应该不存在权限不够的问题。