PowerShell:从文件中删除所有权限,包括。应用程序包

PowerShell: Remove all permissions from a file incl. APPLICATION PACKAGES

我想删除某些 Windows\System32-files 的 所有 权限,例如wuauclt.exe 和 wuaueng.dll。因此我找到了那个脚本:

takeown /F $file
$acl = get-acl $file
$acl.Access | % {$acl.purgeaccessrules($_.IdentityReference)}
Set-Acl -aclobject $acl -Path $file

这给了我所有权并删除了除所有应用程序包和所有受限应用程序包之外的所有权限。我如何才能根据 PowerShell 脚本删除它们(不是手动且不使用第 3 方工具)?

提前致谢!

这些IdentityReference是具体的。事实上,它是 [System.Security.Principal.NTAccount] 的一个实例并将它们转换为 [System.Security.Principal.SecurityIdentifier] 输出错误。 但是仍然可以手动创建它们。 SDDL 格式:

  • ACS-1-15-2-1 对于 ALL APPLICATION PACKAGES
  • S-1-15-2-2 对于 ALL RESTRICTED APPLICATION PACKAGES

您可以添加以下代码来删除它们。但我不确定删除系统文件的这些权限是否是个好主意。

$acl.Access | % {
    if ($_.IdentityReference.Value -imatch "APPLICATION PACKAGES") {
        try {
            $acl.PurgeAccessRules([System.Security.Principal.SecurityIdentifier]::new("S-1-15-2-2")) 
            $acl.PurgeAccessRules([System.Security.Principal.SecurityIdentifier]::new("AC"))
        } catch { }
    }
    else {
        $acl.purgeaccessrules($_.IdentityReference)
    }
}