LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 如何解决文件写权限不可访问

admin
2023年9月10日 12:13 本文热度 797

实际业务中,我们可能会遇到我们的安装包将程序安装在C盘Program Files目录下后,有些文件要修改或者新增会导致拒绝访问的异常。但是我们又不想把数据放临时文件夹AppData中,那么如何解决这个问题呢?

Windows系统本身有着安全策略,在系统文件夹下是不允许随便对文件进行操作的,除非是有管理员权限或者赋予了写的权限。

要解决以上问题,我们有两种方式:

  1. 直接给定文件或文件夹,设置权限

  2. 安装的时候,将需要进行写操作的文件或者文件夹赋予足够的控制权限

直接针对文件夹进行权限的方法如下图所示:

只需要添加EveryOne用户,并勾选完全控制,保存即可(也可以添加Users设置为完全控制)。

这种方法比较简单,我们不过多解说。主要看下我们如何通过软件代码的方式来使之生效。

具体实现如下:

/// <summary>

///为文件夹添加users,everyone用户组的完全控制权限

/// </summary>

/// <param name="dirPath"></param>

static bool AddSecurityControll2Folder(string dirPath)

{

    try

    {

        //获取文件夹信息

        DirectoryInfo dir = new DirectoryInfo(dirPath);

        //获得该文件夹的所有访问权限

        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);

        dirSecurity.ModifyAccessRule(AccessControlModification.Add, everyoneFileSystemAccessRule, out bool isModified);

        //dirSecurity.ModifyAccessRule(AccessControlModification.Add, usersFileSystemAccessRule, out bool isModified);

        //设置访问权限

        dir.SetAccessControl(dirSecurity);

        return isModified;

    }

    catch (Exception)

    {

        return false;

    }

}

注意:

执行权限更改时,需要依赖管理员权限,所以我们在修改权限的时候,直接调用以上代码是会抛异常的。 如果我们的应用程序不具备管理员权限,那么我们不应该在应用程序中直接去修改它。我们可以在安装的时候,对它进行权限更改,因为安装的时候,可以以管理权限运行安装。


该文章在 2023/9/10 12:16:44 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved