【发布时间】:2013-01-29 23:02:05
【问题描述】:
我有一个在 WinPE 中运行的脚本,它获取安装了 Windows 的系统驱动器并删除驱动器上的所有内容(保持文件系统完好无损)。
在处理 Windows XP/Vista/7 安装时,它可以正常工作。 attrib -S -A -H -I -R /S /D \ 运行,然后所有内容都被删除。
但是,在 Windows 8 中,我遇到了“拒绝访问”错误。出于某种原因,即使作为 WinPE 中的 SYSTEM 用户,我也无法编辑目录C:\ProgramData\Microsoft\Windows\LocationProvider。我不能使用attrib 来设置属性,我不能删除它——我什至不能cd 进入它! dir /a 只返回 File Not Found。
使用rmdir /S /Q 会出现“拒绝访问”错误。
【问题讨论】:
-
您是否在多个系统上看到过这种情况,或者只在一个特定的系统上看到过这种情况?在后一种情况下,可能存在文件系统损坏。在前一种情况下,可能是权限问题,您是否检查了该目录上设置的 ACL?
-
啊,老实说,我不知道如何在命令行上检查ACL(这是WinPE,所以只有cmd.exe)。这在我处理过的每个 Windows 8 系统上都很明显 - 它实际上是我正在尝试修复的软件错误(专有,无法显示代码)。
-
您可能只需要检查工作系统上该目录的权限即可;当操作系统关闭时,它们不太可能与运行时不同。但是检查权限的命令行工具是
icacls.exe;默认情况下,它不包含在 WinPE 中,IIRC,因此您需要明确地将副本添加到您的图像中,或者将一个副本放在外部媒体或网络共享上,或其他任何地方。 -
你是对的,icacls.exe 不包含在 WinPE 中。就是这样 - 它必须使用当前文件,没有网络连接,并且没有任何系统的先前知识。我唯一能改变的是运行和删除程序的程序。为了便于使用,您会推荐任何针对 ACL 的 Win32API 调用吗?
-
第一步是在单个系统上使用 icacls.exe 来发现权限是否真的是问题所在。如果是的话,处理起来也不是那么难。这可能只是启用恢复权限的问题。但可能还有其他事情正在发生。
标签: windows windows-8 permissions winpe programdata