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

简介: 写在前面在windows系统中,c盘中的目录权限比较高,有时制作安装包的时候,默认的安装路径就是在c盘,但对运行可执行文件,有时候需要为其添加完全控制权限,或者读写权限。这里将当时的解决方案记录一下。

写在前面

在windows系统中,c盘中的目录权限比较高,有时制作安装包的时候,默认的安装路径就是在c盘,但对运行可执行文件,有时候需要为其添加完全控制权限,或者读写权限。这里将当时的解决方案记录一下。

代码实现

在C盘添加一个文件夹,并在文件夹内部,新建一个文本文件,如图所示:

该文件夹下,新建一个文本文件,如图所示:

为文件添加完全控制权限:

复制代码
        /// <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);
        }
复制代码

总结

在操作文件的时候,还是比较简单的,不过文件夹就比较复杂了,牵扯到是否要继承的问题。

目录
相关文章
|
Linux
linux 交叉编译libpng,libjpeg库
linux 交叉编译libpng,libjpeg库
305 1
|
存储 关系型数据库 MySQL
Mysql - 如何决定用 datetime、timestamp、int 哪种类型存储时间戳?
Mysql - 如何决定用 datetime、timestamp、int 哪种类型存储时间戳?
3177 0
|
JavaScript 前端开发 索引
用Three.js搞个炫酷3D地球
地球人怎么可以不会画地球!从canvas画地球贴图开始,用Three.js手把手教你实现一个炫酷的3D地球!
用Three.js搞个炫酷3D地球
|
机器学习/深度学习 Python
pandas将dataframe列中的list转换为多列
在应用机器学习的过程中,很大一部分工作都是在做数据的处理,一个非常常见的场景就是将一个list序列的特征数据拆成多个单独的特征数据。
275 0
|
9月前
|
人工智能 API 开发工具
ModelScope魔搭12月版本发布月报
为了给开发者提供更便捷的开源模型API访问方式,我们正式启动了 ModelScope API-Inference 的公测。在开源工具链方面,我们进行了ModelScope 1.21.0的新版本发布,提供了llamafile的集成以及模型加载/下载链路的优化,SWIFT 3.0大版本也已经合并主干,在这个基础上新模型的支持会更加顺畅与便利。
392 3
ModelScope魔搭12月版本发布月报
|
安全 Java 数据安全/隐私保护
解析Spring Security中的权限控制策略
解析Spring Security中的权限控制策略
|
10月前
|
数据采集 JavaScript 网络安全
为什么PHP爬虫抓取失败?解析cURL常见错误原因
豆瓣电影评分是电影市场的重要参考,通过网络爬虫技术可以高效采集评分数据,帮助电影制作和发行方优化策略。本文介绍使用PHP cURL库和代理IP技术抓取豆瓣电影评分的方法,解决反爬机制、网络设置和数据解析等问题,提供详细代码示例和优化建议。
399 0
为什么PHP爬虫抓取失败?解析cURL常见错误原因
|
11月前
|
JavaScript 开发者 索引
Object.defineProperty详解!为什么会被vue3被抛弃?
【10月更文挑战第4天】Object.defineProperty详解!为什么会被vue3被抛弃?
Object.defineProperty详解!为什么会被vue3被抛弃?
|
Kubernetes 测试技术 持续交付
现代软件开发中的自动化工具与效率提升
在当今快节奏的软件开发环境中,自动化工具成为了提高效率和质量的关键。本文探讨了几种常见的自动化工具,并分析了它们在不同阶段和场景中的应用,展示了如何通过这些工具优化开发流程,加速项目交付。 【7月更文挑战第8天】
419 2
|
数据采集 分布式计算 DataWorks
MaxCompute产品使用问题之如何确保数据完整性验证有效
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
202 2