public static void AllowModifyOnDirectory(string directoryPath) { if( string.IsNullOrWhiteSpace( directoryPath ) || !Directory.Exists( directoryPath ) ) { return; } try { // Get the access rules of the specified files (user groups and user names that have access to the directory) var rules = File.GetAccessControl(directoryPath).GetAccessRules(true, true, typeof (SecurityIdentifier)); // Get the identity of the current user and the groups that the user is in. var groups = WindowsIdentity.GetCurrent().Groups; string sidCurrentUser = WindowsIdentity.GetCurrent().User.Value; // Check if modifieng is allowed bool allowModify = rules.OfType<FileSystemAccessRule>().Any( rule => (groups.Contains(rule.IdentityReference) || rule.IdentityReference.Value == sidCurrentUser) && rule.AccessControlType == AccessControlType.Allow && (rule.FileSystemRights & FileSystemRights.Modify) == FileSystemRights.Modify); if (allowModify) { return; } DirectoryInfo di = new DirectoryInfo(directoryPath); DirectorySecurity directorySecurity = di.GetAccessControl(); bool modified; try { // Try to add modify rights to all users in Users FileSystemAccessRule fileSystemAccessRule = new FileSystemAccessRule("Users", FileSystemRights.Modify, AccessControlType.Allow); directorySecurity.ModifyAccessRule(AccessControlModification.Set, fileSystemAccessRule, out modified); } catch { // Try to add modify rights to curent user string identity = Environment.UserDomainName + "\\" + Environment.UserName; FileSystemAccessRule fileSystemAccessRule = new FileSystemAccessRule(identity, FileSystemRights.Modify, AccessControlType.Allow); directorySecurity.ModifyAccessRule(AccessControlModification.Set, fileSystemAccessRule, out modified); } } catch { } }
2012-09-26
Change access right on directory for Users group or current user
If you need set some access right to specific folder I can get idea from this code how to do that.
Subscribe to:
Posts (Atom)