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

总结

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

目录
相关文章
|
5月前
|
Linux 数据安全/隐私保护
查看权限控制信息,ls -l可以查看列表数据,展现权限细节,1号位表示权限细节,有10个槽位,第一个位置 -表示文件,d文件夹 | 软链接,前3部分表示所属用户权限,中间用户组权限,后部分其他用户权限
查看权限控制信息,ls -l可以查看列表数据,展现权限细节,1号位表示权限细节,有10个槽位,第一个位置 -表示文件,d文件夹 | 软链接,前3部分表示所属用户权限,中间用户组权限,后部分其他用户权限
查看权限控制信息,ls -l可以查看列表数据,展现权限细节,1号位表示权限细节,有10个槽位,第一个位置 -表示文件,d文件夹 | 软链接,前3部分表示所属用户权限,中间用户组权限,后部分其他用户权限
|
安全 Linux
6.4 文件与目录的默认权限与隐藏权限
6.4 文件与目录的默认权限与隐藏权限
86 0
|
Linux 数据库 数据安全/隐私保护
5.2.3目录与文件之权限意义
5.2.3目录与文件之权限意义
80 0
|
监控 安全 NoSQL
默认权限 umask 和特殊权限 | 学习笔记
快速学习 默认权限 umask 和特殊权限.
|
监控 NoSQL 安全
/文件和目录权限chmod /更改所有者和所属组chown/umask/隐藏权限lsattr/chattr
2.14 文件和目录权限chmod 2.15 更改所有者和所属组chown2.16 umask2.17 隐藏权限lsattr/chattr     文件和目录权限chmod  文件权限: r     4       可读 w    2      可写 x     1    ...
1328 0
|
PHP Apache JavaScript
|
Shell 数据安全/隐私保护 Linux