C#文件夹权限操作工具类
标签:rect try 需要 cat std sse ret obj section
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.AccessControl;
using System.Text;
using System.Threading.Tasks;
namespace CvNetVideo.Play
{
///
/// 目录权限辅助类
///
public class DictionaryHelper
{
///
/// 需要足够的权限才能执行此操作:Get filepath rights
///
///
///
public static List GetRights(string path)
{
List ret = new List();
DirectorySecurity dirSec = Directory.GetAccessControl(path, AccessControlSections.All);
AuthorizationRuleCollection rules = dirSec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
foreach (FileSystemAccessRule rule in rules)
{
ret.Add(rule.FileSystemRights);
}
return ret;
}
//public static void AccessExample() {
// try
// {
// string DirectoryName = "TestDirectory";
// Console.WriteLine("Adding access control entry for " + DirectoryName);
// // Add the access control entry to the directory.
// AddDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);
// Console.WriteLine("Removing access control entry from " + DirectoryName);
// // Remove the access control entry from the directory.
// RemoveDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);
// Console.WriteLine("Done.");
// }
// catch (Exception e)
// {
// Console.WriteLine(e);
// }
// Console.ReadLine();
//}
// Adds an ACL entry on the specified directory for the specified account.
public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
{
// Create a new DirectoryInfo object.
DirectoryInfo dInfo = new DirectoryInfo(FileName);
// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity dSecurity = dInfo.GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
dSecurity.AddAccessRule(new FileSystemAccessRule(Account,
Rights,
ControlType));
// Set the new access settings.
dInfo.SetAccessControl(dSecurity);
}
// Removes an ACL entry on the specified directory for the specified account.
public static void RemoveDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
{
// Create a new DirectoryInfo object.
DirectoryInfo dInfo = new DirectoryInfo(FileName);
// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity dSecurity = dInfo.GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
Rights,
ControlType));
// Set the new access settings.
dInfo.SetAccessControl(dSecurity);
}
}
}
C#文件夹权限操作工具类
标签:rect try 需要 cat std sse ret obj section
原文地址:https://www.cnblogs.com/boonya/p/9013564.html
评论