web-dev-qa-db-ja.com

PowerShellSet-Aclを使用したACLアクセス許可の適用

New-Item -Type Directory -Path "C:\MyFolder"
$Acl = Get-Acl "C:\MyFolder"
$Ar = New-Object System.Security.AccessControl.FileSystemAccessRule("username", "FullControl", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl -Path "C:\MyFolder" -AclObject $Acl

こんにちは、上記のコードを取得し、独自の設定を使用して適用すると、フォルダーにユーザーアカウントのエントリが追加されますが、アクセス許可は適用されません(チェックマークはありません)

なぜこれが起こるのか誰かが助けてくれますか?

ありがとう

4
Royston

今日、ILSpyをコンパイルしようとしたところ、権限の問題であるAL1078: Error signing Assemblyが発生しました。回答の融合が表示されます。

このPowerShellスクリプトは、現在ログインしているユーザーのトークンに$CurUsrを割り当て、アクセス許可が変更されるフォルダーとして$CurTgtを割り当てます。必要に応じて変更してください。

権限の追加:

$CurTgt = "C:\Users\All Users\Microsoft\Crypto\RSA\MachineKeys"
$CurUsr = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$acl = Get-Acl $CurTgt
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($CurUsr,"FullControl","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($AccessRule)
$acl | Set-Acl $CurTgt

許可を削除します。

$CurTgt = "C:\Users\All Users\Microsoft\Crypto\RSA\MachineKeys"
$CurUsr = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$acl = Get-Acl $CurTgt
$usersid = New-Object System.Security.Principal.Ntaccount ($CurUsr)
$acl.PurgeAccessRules($usersid)
$acl | Set-Acl $CurTgt

参照:

ACLの管理継承現在のユーザー

1
noabody