以前の記事「【VB.NET】ファイルのアクセス権限を変更する」でファイルのアクセス権限を変更する方法について説明しました。
今回は、フォルダのアクセス権限を変更する方法について説明します。

以下、サンプル。
Imports System.Security.AccessControl

Public Class ACLSample
Public Shared Sub Main()
Dim DirInfo As New System.IO.DirectoryInfo("D:\test")
Try
Dim DirSec As DirectorySecurity
DirSec = DirInfo.GetAccessControl()
'アクセス権限を指定
'Everyoneに対し、フルコントロールの許可
'(サブフォルダ、及び、ファイルにも適用)

Dim AccessRule As New FileSystemAccessRule( _
"Everyone", _
FileSystemRights.FullControl, _
InheritanceFlags.ContainerInherit, _
PropagationFlags.None, _
AccessControlType.Allow)

'アクセス権限を追加
DirSec.AddAccessRule(AccessRule)
DirInfo.SetAccessControl(DirSec)
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
End Sub
End Class

上記を実行すると、DドライブにあるTestフォルダのアクセス権限に"Everyone"に対してフルコントロールの権限が与えられます。

【補足事項】
・管理者権限がない場合、プログラムは例外を発生します。
・AccessRuleクラスのコンストラクタ引数がフォルダの場合と異なります。
 →フォルダの場合、簡略指定としてファイルと同じ引数にすることができます。
  簡略指定の場合、サブフォルダやファイルを含めた権限の変更はできません。