من سطر الأوامر الإداري (تشغيل كمسؤول):
Takeown /F "اسم الملف" /أ
سيعطي ملكية الملف لمجموعة المسؤولين ويسمح لك بتنفيذ البرنامج النصي الخاص بك.
قد تحتاج أيضًا إلى استخدام أمر 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 "اسم الملف" /أ
سيعطي ملكية الملف لمجموعة المسؤولين ويسمح لك بتنفيذ البرنامج النصي الخاص بك.
قد تحتاج أيضًا إلى استخدام أمر ICACLS لإضافة أو تعديل أذونات مجموعة المسؤولين بعد منحها ملكية الملف.