C#文件夹权限操作工具类
2024-09-04 11:33:21
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
{
/// <summary>
/// 目录权限辅助类
/// </summary>
public class DictionaryHelper
{
/// <summary>
/// 需要足够的权限才能执行此操作:Get filepath rights
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static List<FileSystemRights> GetRights(string path)
{
List<FileSystemRights> ret = new List<FileSystemRights>(); 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); }
}
}
最新文章
- QuickRun-快速运行助手
- Replication的犄角旮旯(二)--寻找订阅端丢失的记录
- Bots(逆元,递推)
- Centos 安装 NodeJS
- C语言-sizeof()与strlen()的区别【转】
- Chrome应用技巧之代码整理。
- Vue深度学习(5)-过渡效果
- selenium自动化测试在富文本中输入信息的方法
- zipkin
- C# 应用Excel条件格式(一)
- node启动本地服务器
- Objective-C ARC下IBOutlet属性是用weak还是strong来修饰
- 关于服务器时区BEIST-8、GMT-8、Asia/Shanghai、CST、GMT+8:00等缩写的含义
- JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List<;T>;转JSON,JSON转List<;T>;,JSON转C#对象
- 本地存储(LocalStorage、SessionStorage、Web SQL Database、Indexed DB)
- 在mac上命令行里面如何打开文本编辑器?
- ZOJ2725_Digital Deletions
- mysql 创建,授权,删除 用户
- ListBox绑定一个对象
- ThinkPHP5项目目录规划实践