Create Directory with windows access rights
I met some troubles when tring to create directory with access rights, fortunately, I found some useful imformation, just mark them as below,
View Code
Imports System.Security.AccessControl
Imports System.IO
Public Class Form1
' Add access control for Windows Account to directory or file
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
AddFileSecurity("\\MartinXie\ShareFolder", "Everyone", "Write")
AddFileSecurity("\\MartinXie\ShareFolder", "Domain\UserCccount", "FullControl")
End Sub
Public Sub AddFileSecurity(ByVal filePath As String, ByVal username As String, ByVal power As String)
Dim dirinfo As DirectoryInfo = New DirectoryInfo(filePath)
Dim dirsecurity As DirectorySecurity = dirinfo.GetAccessControl()
Select Case power
Case "FullControl"
dirsecurity.AddAccessRule(New FileSystemAccessRule(username, FileSystemRights.FullControl, InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow))
dirsecurity.AddAccessRule(New FileSystemAccessRule(username, FileSystemRights.FullControl, InheritanceFlags.None, PropagationFlags.InheritOnly, AccessControlType.Allow))
dirsecurity.AddAccessRule(New FileSystemAccessRule(username, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit, PropagationFlags.InheritOnly, AccessControlType.Allow))
Case "ReadOnly"
dirsecurity.AddAccessRule(New FileSystemAccessRule(username, FileSystemRights.Read, AccessControlType.Allow))
Case "Write"
dirsecurity.AddAccessRule(New FileSystemAccessRule(username, FileSystemRights.Write, InheritanceFlags.ContainerInherit, PropagationFlags.InheritOnly, AccessControlType.Allow))
dirsecurity.AddAccessRule(New FileSystemAccessRule(username, FileSystemRights.Write, InheritanceFlags.None, PropagationFlags.InheritOnly, AccessControlType.Allow))
dirsecurity.AddAccessRule(New FileSystemAccessRule(username, FileSystemRights.Write, InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow))
Case "Modify"
dirsecurity.AddAccessRule(New FileSystemAccessRule(username, FileSystemRights.Modify, AccessControlType.Allow))
End Select
dirinfo.SetAccessControl(dirsecurity)
End Sub
End Class
If you want to remove access control permission for Windows Account from directory or file, just change AccessControlType.Allow to AccessControlType.Deny in above code sample.
Some tutorials:
Article:Working with Access Control List in .NET
http://nayyeri.net/blog/Working-with-Access-Control-List-in-NET-2-0/
Thread: about DirectorySecurity discussion
http://social.msdn.microsoft.com/Forums/en-US/clr/thread/a83ddfea-5ad7-4a44-ab40-0fd5cadf4e99