You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell如何移除系统文件含ALL APPLICATION PACKAGES的所有权限

移除System32文件全部权限的PowerShell解决方案

风险提示

警告:修改System32目录下的系统文件权限会导致Windows核心功能异常,包括但不限于Windows更新失效、系统组件崩溃、安全补丁无法安装,严重时会引发系统无法启动。操作前请确认必要性,提前做好系统备份。

问题原因

原脚本无法移除ALL APPLICATION PACKAGES、ALL RESTRICTED APPLICATION PACKAGES两个主体的权限,核心原因是这两个身份的权限默认从System32父目录继承而来,未禁用继承的情况下直接清除规则不会生效。

完整实现脚本

# 请以管理员身份运行此脚本
# 定义需要处理的文件列表
$targetFiles = @(
    "C:\Windows\System32\wuauclt.exe",
    "C:\Windows\System32\wuaueng.dll"
)

foreach ($file in $targetFiles) {
    # 跳过不存在的文件
    if (-not (Test-Path $file -PathType Leaf)) {
        Write-Warning "文件不存在:$file"
        continue
    }

    # 第一步:获取文件所有权,/a参数将所有权分配给管理员组
    takeown /F $file /A | Out-Null

    # 第二步:获取文件当前ACL配置
    $acl = Get-Acl -Path $file

    # 第三步:禁用权限继承,同时删除所有继承而来的权限(关键步骤)
    $acl.SetAccessRuleProtection($true, $false)

    # 第四步:移除所有显式定义的访问规则
    foreach ($rule in $acl.Access) {
        $acl.RemoveAccessRuleAll($rule)
    }

    # 第五步:将修改后的ACL应用到文件
    Set-Acl -Path $file -AclObject $acl
    Write-Host "已处理文件权限:$file"
}

注意事项

  • 必须以管理员身份启动PowerShell执行脚本,否则无权限修改系统文件属性
  • 64位系统下请使用64位PowerShell运行,若使用32位PowerShell,需要将路径中的System32替换为SysNative,避免系统自动重定向到SysWOW64目录
  • 若文件被系统进程/服务占用,会出现修改失败提示,可先终止对应进程(例如处理Windows更新相关文件时,先执行Stop-Service wuauserv -Force停止更新服务)后再运行脚本

内容的提问来源于stack exchange,提问作者tar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:57:01