標籤:
/// <summary> /// 設定檔案夾的ACL /// </summary> /// <param name="folderPath">檔案夾路徑</param> /// <param name="userName">使用者</param> /// <param name="rights">許可權</param> /// <param name="allowOrDeny">拒絕訪問</param> /// <returns></returns> public static bool SetFolderACL( string folderPath, string userName, FileSystemRights rights, AccessControlType allowOrDeny) { //設定檔案ACL繼承 InheritanceFlags inherits = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit; return SetFolderACL(folderPath, userName, rights, allowOrDeny, inherits, PropagationFlags.None, AccessControlModification.Add); } /// <summary> /// 設定檔案夾的ACL /// </summary> /// <param name="folderPath">檔案夾路徑</param> /// <param name="userName">使用者</param> /// <param name="rights">許可權</param> /// <param name="allowOrDeny">拒絕訪問</param> /// <param name="inherits">ACL繼承</param> /// <param name="propagateToChildren">應用於子檔案夾及子檔案</param> /// <param name="addResetOrRemove">修改類型</param> /// <returns></returns> public static bool SetFolderACL( string folderPath, string userName, FileSystemRights rights, AccessControlType allowOrDeny, InheritanceFlags inherits, PropagationFlags propagateToChildren, AccessControlModification addResetOrRemove) { bool result; //擷取目錄資訊 var folder = new DirectoryInfo(folderPath); //擷取當前檔案夾ACL var dSecurity = folder.GetAccessControl(AccessControlSections.All); //設定新的ACL規則 var accRule = new FileSystemAccessRule(userName, rights, inherits, propagateToChildren, allowOrDeny); //修改檔案夾ACL dSecurity.ModifyAccessRule(addResetOrRemove, accRule, out result); //應用新的ACL規則到檔案夾 folder.SetAccessControl(dSecurity); //返回結果 return result; }
下面這樣調用
var folderPath = System.AppDomain.CurrentDomain.BaseDirectory; var userName = "Users"; SetFolderACL(folderPath, userName, FileSystemRights.FullControl, AccessControlType.Allow);
C# 設定檔案夾的存取權限