C# 读取和设置文件、文件夹权限

        C#程序运行时经常遇到文件或文件夹权限问题,导致程序运行失败。为了解决这个头疼的问题,我们通常要读取和设置文件、文件夹权限。

读取文件、文件夹权限

        /// <summary>/// 读取文件、文件夹权限/// </summary>/// <param name="path"></param>private void ReadPathRule(string path){DirectoryInfo di = new DirectoryInfo(path);DirectorySecurity ds = di.GetAccessControl(AccessControlSections.All);foreach (FileSystemAccessRule rule in ds.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount))){Console.WriteLine("----------------------------------");Console.WriteLine(rule.IdentityReference.Value);if ((rule.FileSystemRights & FileSystemRights.Read) != 0)Console.WriteLine(rule.FileSystemRights.ToString());}}

设置文件权限

        /// <summary>/// 为文件添加users,everyone用户组的完全控制权限/// </summary>/// <param name="filePath"></param>static void AddSecurityControll2File(string filePath){//获取文件信息FileInfo fileInfo = new FileInfo(filePath);//获得该文件的访问权限System.Security.AccessControl.FileSecurity fileSecurity = fileInfo.GetAccessControl();//添加ereryone用户组的访问权限规则 完全控制权限fileSecurity.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow));//添加Users用户组的访问权限规则 完全控制权限fileSecurity.AddAccessRule(new FileSystemAccessRule("Users", FileSystemRights.FullControl, AccessControlType.Allow));//设置访问权限fileInfo.SetAccessControl(fileSecurity);}

设置文件夹权限

        /// <summary>///为文件夹添加users,everyone用户组的完全控制权限/// </summary>/// <param name="dirPath"></param>static void AddSecurityControll2Folder(string dirPath){//获取文件夹信息DirectoryInfo dir = new DirectoryInfo(dirPath);//获得该文件夹的所有访问权限System.Security.AccessControl.DirectorySecurity dirSecurity = dir.GetAccessControl(AccessControlSections.All);//设定文件ACL继承InheritanceFlags inherits = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit;//添加ereryone用户组的访问权限规则 完全控制权限FileSystemAccessRule everyoneFileSystemAccessRule = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, inherits, PropagationFlags.None, AccessControlType.Allow);//添加Users用户组的访问权限规则 完全控制权限FileSystemAccessRule usersFileSystemAccessRule = new FileSystemAccessRule("Users", FileSystemRights.FullControl, inherits, PropagationFlags.None, AccessControlType.Allow);bool isModified = false;dirSecurity.ModifyAccessRule(AccessControlModification.Add, everyoneFileSystemAccessRule, out isModified);dirSecurity.ModifyAccessRule(AccessControlModification.Add, usersFileSystemAccessRule, out isModified);//设置访问权限dir.SetAccessControl(dirSecurity);}

注意:修改权限有时候需要程序有管理员权限,怎么以管理员身份运行程序,请参考:

C#/WPF 以管理员身份运行程序-CSDN博客

本文参考资料:

C#中修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限_c#修改文件权限-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/583587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

axios实例配置和使用

一.vite项目中引入axios 1.1.安装axios pnpm add axios --save 二.配置axios实例 2.1实例配置 import axios from ‘axios’ import router from ‘/router’ const instance axios.create({ baseURL:“http://127.0.0.1:8080”, timeout:10*1000, //最长响应时间 }) instan…

【Qt-QWidget-QLabel-QFrame-QSlider-View-Bar】

Qt编程指南 ■ Label■ QLabel■ QMovie 显示动画■ Widget■ QWidget■ QTabWidget■ QTableWidget■ QListWidget■ QStackedWidget■ QCalendarWidget■ QFrame■ QFrame■ View■ QT

2023.12.29 Python面向对象 封装_继承_多台

目录 1.封装-私有与公开权限 2.继承 2.1多继承 2.2继承多层传递 2.3重写父类方法 2.4继承链 2.5禁止私有继承 3.多态 4.总结 1.封装-私有与公开权限 公开属性、公开方法&#xff1a;随便调用 私有属性、私有方法&#xff1a; 只能在类定义的内部调用 以两个下划线开头__的…

Object 和Json字符串互转工具类

Object 和Json字符串互转 引入依赖的jar包 <!-- jackson --> <dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-guava</artifactId><version>2.5.3</version> </dependency&…

Docker:登录私有仓库\退出私有仓库

一、登录仓库 docker login : 登录到一个Docker镜像仓库&#xff0c;如果未指定镜像仓库地址&#xff0c;默认为官方仓库 Docker Hub 语法: docker login [OPTIONS] [SERVER] docker login -u 用户名 -p 密码 仓库名称 # 登入私有仓库 [rootlocalhost ~]# docker login --…

归并算法:分治而治的高效算法大揭秘(图文详解)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《数据结构&算法》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! &#x1f4cb; 前言 归并算法是我们算法中最常见的算法之一&#xff0c;其思想非常巧妙。本身归并是只能归并有序数组…

一文带你掌握Flutter dio网络请求库的封装

highlight: an-old-hope 封装网络库考虑的几个方面&#xff1a; 请求参数的封装&#xff1a; 将请求所需的参数进行封装&#xff0c;例如 URL、请求头、请求体等。可以定义一个统一的数据结构或模型类来表示请求参数&#xff0c;以便于传递和管理。 响应结果的封装&#xff…

源码解析:mybatis调用链之获取sqlSession

SqlSession 通过SqlSession sqlSession sqlSessionFactory.openSession();获取SqlSession实例&#xff0c; DefaultSqlSessionFactory public SqlSession openSession() {return openSessionFromDataSource(configuration.getDefaultExecutorType(), null, false);}//从数据…

蓝牙物联网智能安防系统设计方案

1概述 安防系统(安全防护)的作用是预防损失&#xff0c;是人们保障人身和财产安全最重要的工具之一。近年来&#xff0c;伴随经济的飞速发展和城市人口的急剧增加&#xff0c;盗窃、入室抢劫等事件的增多给人们的安定生活带来了很大的影响&#xff0c;同时&#xff0c;交通的快…

安装DataEase(Linux线上安装)修改端口

问题一&#xff1a;端口更改 警告本解决方法仅仅应急&#xff0c;如果找到了更好的方法请通知我&#xff0c;感谢你的理解&#xff01;&#xff01;&#xff01; 为了让mysql与dataease的端口不发生冲突&#xff0c;将 MySQL 外部运行端口参数 ${DE_MYSQL_PORT} 改为新端口&am…

鹏城杯2023初赛 Reverse WriteUp

一. 安全编程 rust逆向&#xff0c;直接动调 定位关键函数sub_7FD043E88C70 下断点跟进 观察控制台 guess number plz input 1-10 number 这时我们随便输入一个数&#xff0c;往下跟进 .text:00007F14B3684E9B .text:00007F14B3684E9B loc_7F14B3684E9B: .text:00007F14B…

拓扑排序笔记

这段代码通过拓扑排序对有向无环图进行排序。它创建了一个图结构&#xff0c;其中包含节点、邻接表和入度数组。然后&#xff0c;通过输入添加了一些边&#xff0c;创建了图的结构。接着&#xff0c;使用拓扑排序算法对图进行排序&#xff0c;并将排序后的结果打印输出。 首先…

C++如何获取随机浮点数

在C中&#xff0c;可以使用标准库中的<random>头文件来生成随机浮点数。以下是一个简单的例子&#xff1a; #include <iostream> #include <random>int main() {// 创建一个随机数生成器对象std::random_device rd;std::mt19937 gen(rd());// 创建一个均匀分…

使用FFmpeg进行录屏

不用下载那些录屏软件&#xff0c;安装了FFmpeg的话&#xff0c;直接实现 使用FFmpeg进行屏幕录制可以通过以下步骤实现&#xff1a; 安装FFmpeg&#xff1a;首先需要在您的系统上安装FFmpeg。可以通过包管理器&#xff08;如apt、yum等&#xff09;或从官方网站下载并编译安装…

openGauss学习笔记-176 openGauss 数据库运维-实例主备切换

文章目录 openGauss学习笔记-176 openGauss 数据库运维-实例主备切换176.1 操作场景176.2 操作步骤176.3 示例176.4 错误排查176.5 异常处理 openGauss学习笔记-176 openGauss 数据库运维-实例主备切换 176.1 操作场景 openGauss在运行过程中&#xff0c;数据库管理员可能需要…

linux卸载小皮面板phpstudy教程

千万不要直接删文件夹! 千万不要直接删文件夹! 千万不要直接删文件夹! 我就是按照网上搜索的教程,直接删了,然后 系统就不停的崩溃 生成这种文件: -rw------- 1 root root 223M Dec 28 22:36 core.31544 -rw------- 1 root root 223M Dec 28 18:04…

基于elemen二次封装弹窗组件

效果&#xff1a; 一、自定义内容类型弹窗 <!-- title&#xff1a;对话框的标题confirmLoading&#xff1a;当前是否处于提交中titleCenter&#xff1a;对话框标题居中方式footerCenter&#xff1a;底部按钮的对其方式visible&#xff1a;是否显示弹窗width&#xff1a;设置…

【机器学习】Boosting算法-AdaBoost算法

一、AdaBoost理论 随机森林与AdaBoost算法的比较 AdaBoost算法 AdaBoost模型训练误差分析 从广义加法模型推导出AdaBoost训练算法&#xff0c;从而给出AdaBoost算法在理论上的解释 各种AdaBoost算法对比 标准AdaBoost算法只能用于二分类问题&#xff0c;它的改进型可以用于多分…

泽攸科技PECVD设备助力开发新型石墨烯生物传感器

近日&#xff0c;松山湖材料实验室许智团队与清华大学符汪洋合作在纳米领域头部期刊《Small》上发表了一项引人注目的研究成果&#xff0c;题为“Ultrasensitive biochemical sensing platform enabled by directly grown graphene on insulator”&#xff08;硅晶圆上直接生长…

Seatunnel MYSQL数据同步

Seatunnel MYSQL数据同步 Docker镜像 Seatunnel Docker image镜像制作-CSDN博客 数据库表 #source库 CREATE TABLE IF NOT EXISTS student(id INT UNSIGNED AUTO_INCREMENT,name VARCHAR(100) NOT NULL,age int unsigned,gender char(8) NOT NULL,PRIMARY KEY ( id ) )ENGINE…