我刚刚将 Hyper-V 客户机从 Windows Server 2008 就地升级到 Server 2012 R2(通过 Server 2012,因为不支持从 2008 直接升级到 2012 R2)。通常,人们会创建一个新机器并夺取角色,这是微软官方“首选”的选项,但出于组织原因,这是不可能的。这是一次测试运行,在与网络断开连接的原始 VM 副本上进行。
一切看起来都正常,但双击在 Windows 资源管理器中打开 3 个数据驱动器(单独的 VHDX 文件)中的一个时显示“拒绝访问”。但是,我可以从命令行列出目录并查看文件!
解决步骤:
- 仔细检查 Hyper-V 客户机设置是否与生产服务器完全相同
- 在虚拟机中运行
chkdsk
,未发现错误 - 磁盘管理显示健康的活动主分区(有趣的是,这是唯一一个一开始就有未分配空间的磁盘,也许这有关?)
- 同样相关:磁盘无法标记为脱机,并且它之前是页面文件的主机
- 将页面文件移至
C:\
(现在可以在磁盘管理中将磁盘脱机) - 将磁盘脱机然后再次联机
- 删除驱动器号分配并重新添加
- 从注册表备份共享,关闭虚拟机,断开有问题的 VHDX,重新启动,关闭,重新连接 VHDX
- 在该磁盘上相关卷之前的未分配空间中创建了一个新卷,然后将其删除
- 从生产服务器重新复制了此驱动器的 VHDX 文件,以防 VHDX 在原始复制过程中损坏
- 最后,我获得了所有权并重新授予了驱动器(此文件夹、所有子文件夹和文件)的权限,并将其应用于子对象。仍然显示“拒绝访问”,表明这不是与 ACL(文件权限)相关的问题
这不会影响任何其他驱动器,包括系统驱动器。
我还没有将数据复制到新驱动器,因为我想了解根本原因。
下一步我应该尝试什么?
答案1
由于您在服务器上使用数据驱动器,我将继续假设您将其用作共享设备?
如果是,则有 NTFS 权限,也有共享权限。最佳做法是授予每个人共享级别的所有权限,并将您的权限策略写入 NTFS 权限。
也许共享权限受到限制?
答案2
我遇到了同样的问题。对我来说,快速解决方法是将Everyone
“仅限此文件夹”的组重新添加到驱动器根目录,并使用:Read & Execute
和List folder contents
权限Read
(驱动器属性/安全/高级)。
就我而言,这个问题是由于我的错误做法造成的,我将 SQL 2016 安装程序日志文件位置指向驱动器的根目录,而不是创建子文件夹。然后安装程序剥夺了我们不必要的权限,并且 Windows 资源管理器访问被阻止。
答案3
在这种情况下,UAC 是罪魁祸首。
当您以属于计算机本地管理员组的用户身份登录时,UAC 会为该用户提供两个不同的令牌,“一个完整管理员访问令牌和一个“过滤的”标准用户访问令牌”...“然后使用标准用户访问令牌启动桌面(Explorer.exe)”。
你至少有两个选择来应对这个挫折:
- 在这种情况下,通过网络获取资源(因为 UAC 不起作用)。
- 创建新的安全组并授予其访问 NTFS 权限。
如果你没有该资源的 NTFS 权限,你可以运行提升权限的 Windows 文件资源管理器,