从管理命令行(作为管理员运行):
takeown /f“ filename” /a
将向管理员组提供文件所有权,并允许您执行脚本。
您可能还需要使用iCACLS命令在授予该文件的所有权后,为管理员组添加或修改权限。
题
我试图在许多文件上设置审核控件(在 ACLsWin.txt
) 位于 \%Windows%\System32
(例如, aaclient.dll
)使用以下PowerShell脚本:
$FileList = Get-Content ".\ACLsWin.txt"
$ACL = New-Object System.Security.AccessControl.FileSecurity
$AccessRule = New-Object System.Security.AccessControl.FileSystemAuditRule("Everyone", "Delete", "Failure")
$ACL.AddAuditRule($AccessRule)
foreach($File in $FileList)
{
Write-Host "Changing audit on $File"
$ACL | Set-Acl $File
}
每当我运行脚本时,我都会得到错误 PermissionDenied [Set-Acl] UnauthorizedAccessException
.
这似乎来自以下事实:这些文件的所有者是 TrustedInstaller
. 。我正在以管理员的身份运行这些脚本(即使我在内置管理员帐户上),但仍失败。我可以使用“安全性”选项卡手工设置这些审核控件,但是至少有200个文件可能会导致人体错误。
我该如何四处走动 TrustedInstaller
并使用PowerShell设置这些审核控件?
解决方案
从管理命令行(作为管理员运行):
takeown /f“ filename” /a
将向管理员组提供文件所有权,并允许您执行脚本。
您可能还需要使用iCACLS命令在授予该文件的所有权后,为管理员组添加或修改权限。