无法从 WinPE 中的 Windows 8 安装中完全删除 ProgramData
Posted
技术标签:
【中文标题】无法从 WinPE 中的 Windows 8 安装中完全删除 ProgramData【英文标题】:Cannot fully delete ProgramData from Windows 8 installation within WinPE 【发布时间】: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 来发现权限是否真的是问题所在。如果是的话,处理起来也不是那么难。这可能只是启用恢复权限的问题。但可能还有其他事情正在发生。
【参考方案1】:
假设问题与权限和/或所有权有关,您可以使用内置的 robocopy
工具解决它 - 幸运的是,它包含在 Windows PE 中。
首先,创建一个空目录,例如x:\empty
,然后运行
robocopy /e /purge /b x:\empty c:\
/b
标志告诉 robocopy 使用绕过安全性的备份模式。
【讨论】:
【参考方案2】:遇到了同样的问题。您需要先take ownership,例如使用takeown.exe
。然后修复权限,例如使用icacls.exe
。然后随心所欲地复制、移动、删除。
【讨论】:
以上是关于无法从 WinPE 中的 Windows 8 安装中完全删除 ProgramData的主要内容,如果未能解决你的问题,请参考以下文章
U盘启动 WinPE系统维护工具 任意安装GHO/WIM/ESD系统映像 无广告专业版