
Windows 10 ドメイン メンバーの管理者権限の必要性を減らそうとしました。ユーザーがよく行う操作の 1 つは、共有パブリック デスクトップからデスクトップ アイコンを削除することです (愚かなソフトウェア インストーラーのせいで)。そこで、ローカル グループを追加し、そこに所有者ユーザー (パワー ユーザーに似ています) を追加し、そのグループにパブリック デスクトップ フォルダーの「削除許可」ACL エントリを追加します。これは機能します (ある程度は機能しますが、フォルダーを開く必要があり、デスクトップ上のアイコンを直接削除することはできませんが、この質問) ですが、ACL は定期的にリセットされるようです (許可権限を持つこのローカル グループの ACE は削除されます)。
何かがフォルダーのアクセス許可をリセットしたようですが、それが何なのかはわかりません。グループ ポリシーではないと思います。少なくとも意図的ではありません。Windows には、そのフォルダーを調整するためのアクセス許可テンプレートがありますか? (また、その適用をトリガーするものは何ですか?)
これはスクリプトの一部です (動作しますが、数日後に設定が失われます)。
$PublicDesktop = "$env:Public\Desktop"
$localowneraccount = "$env:COMPUTERNAME\$localowners"
$acl = Get-Acl $PublicDesktop
$t = $null
$t = $acl.Access | where { $_.IdentityReference -eq $localowneraccount -and $_.FileSystemRights.ToString() -imatch "Delete"}
if ($t -eq $null) {
$_perms = "$([System.Security.AccessControl.FileSystemRights]::Delete),$([System.Security.AccessControl.FileSystemRights]::DeleteSubdirectoriesAndFiles)"
$_inherit = [System.Security.AccessControl.InheritanceFlags]::ContainerInherit+[System.Security.AccessControl.InheritanceFlags]::ObjectInherit
$_propagate = [System.Security.AccessControl.PropagationFlags]::InheritOnly
$_allow = [System.Security.AccessControl.AccessControlType]::Allow
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($localowneraccount, $_perms, $_inherit, $_propagate, $_allow)
$acl.AddAccessRule($AccessRule)
$acl | Set-Acl $PublicDesktop -ErrorAction Stop
Write-Host "Added Delete permission for Public Desktop to Group=<$localowners>"
} else {
Write-Verbose "Public Desktop delete permission already granted to Group=<$localowners>"
}