我在 Windows 11 中有一个连接点,它指向一个已删除的文件夹,我无法以任何方式删除它。takeown
报告成功取得所有权,但随后rmdir
也fsutil reparsepoint delete
无法删除它 - 每次我都收到“访问被拒绝”的消息,即使我在 shell 中以管理员身份工作。有人知道如何删除这种令人厌恶的东西吗?
答案1
Windows 具有一些允许绕过文件权限的进程权限 - 类似于 root 在类 Unix 系统中可以执行的操作(除了在 Windows 中存在“授予但禁用”的中间状态 - 所有管理员都默认被授予这些权限,但进程在使用前仍需要手动激活它们)。
从提升的(管理员)PowerShell 执行以下操作:
从 Microsoft 的 PSGallery 安装 PSPrivilege 模块:
Install-Module -Name PSPrivilege -Scope CurrentUser
(它是一个第三方模块,但其作者因其在该领域的 Python 和 PowerShell/.NET 项目而闻名。)
启用“备份”和“恢复”权限:
Enable-ProcessPrivilege SeBackupPrivilege, SeRestorePrivilege
这只会对当前 PowerShell 窗口产生影响。
现在您应该能够删除对象,而不管其 ACL 如何:
del -Force the_bad_junction
(执行 Enable-ProcessPrivilege 的另一种方法是安装 ProcExp 或 Process Hacker,打开 powershell.exe 进程的属性窗口,然后使用“Token”选项卡启用权限。)
您收到“拒绝访问”的原因可能有几个,与文件权限无关(例如包括文件完整性级别;防病毒软件或其他奇怪的驱动程序;或者在服务器决定您没有权限时尝试通过网络共享执行此操作)。
如果磁盘是本地的,您可以将其连接到 Linux 系统,该系统将忽略所有 NTFS ACL 和所有驱动程序施加的限制:
制作一个捆绑了 ntfs-3g 的 Linux 实时 CD/USB(例如 Ubuntu 就可以)。
如果需要,请暂时禁用安全启动。
再次启动 Windows,然后重启从 Windows 进入 Linux。(具体来说,使用“重新启动”,而不是“关机”,这样 Windows 将完全卸载 NTFS 分区,您无需费心禁用快速启动。)
该删除的就删除吧。