C#给用户设置文件访问权限,临时访问并恢复之前的权限

C#给用户设置文件访问权限,临时访问并恢复之前的权限

using System.Security.AccessControl;
using System.Security.Principal;
public class Program
{
    public static void Main()
    {
        //能做做参考 
        List<FileSystemAccessRule> systemAccessRules = new List<FileSystemAccessRule>(); // 暂存以前的权限
        string path = "C:\\Test";
        AddDirectorySecurity(path, systemAccessRules);
        DirectoryInfo dInfow = new DirectoryInfo("C:\\Test");

        var files = dInfow.GetFiles(); // 测试能否读取文件

        DirectorySecurity dSecurity = dInfow.GetAccessControl();
         

        /// 恢复文件之前的权限
        foreach (var f in systemAccessRules)
        {
            dSecurity.RemoveAccessRuleAll(new FileSystemAccessRule(f.IdentityReference.Value, FileSystemRights.FullControl, AccessControlType.Allow));
            dSecurity.ModifyAccessRule(AccessControlModification.Add, f, out var ok);
        }

        dInfow.SetAccessControl(dSecurity);

        Console.ReadKey();

    }



   // 设置权限
    static void AddDirectorySecurity(string FileName, List<FileSystemAccessRule> files)
    {
        // 获取目录信息
        DirectoryInfo dInfo = new DirectoryInfo(FileName);

        // 获取目录控制信息
        DirectorySecurity dSecurity = dInfo.GetAccessControl();
        // 获取目录相关权限
        var c = dSecurity.GetAccessRules(true, true, typeof(NTAccount)).OfType<FileSystemAccessRule>();

        foreach (var g in c)
        {
            files.Add(g);
            // 不知道为啥直接修改不行 
            // g.IdentityReference.Value 就是用户账号
            dSecurity.RemoveAccessRuleAll(new FileSystemAccessRule(g.IdentityReference.Value, FileSystemRights.FullControl, AccessControlType.Deny));
            dSecurity.ModifyAccessRule(AccessControlModification.Add, new FileSystemAccessRule(g.IdentityReference.Value, FileSystemRights.Read, AccessControlType.Allow), out var ok);
            Console.WriteLine(ok);

        }
        // 设置权限
        dInfo.SetAccessControl(dSecurity);


    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中,可以通过使用角色和授权管理来设置用户权限。以下是一些在C#设置用户权限的最佳实践: 1.定义用户角色和权限 在程序中定义不同的用户角色和权限,例如超级管理员、管理员、普通用户等,以及他们可以使用的功能列表。可以使用数据库或者配置文件来存储用户角色和权限信息。 2.使用身份验证确定用户角色 在程序启动时,通过身份验证确定当前用户的角色。可以使用ASP.NET的身份验证机制,例如Forms身份验证或者Windows身份验证,来验证用户的身份。 3.在程序中进行权限检查 在程序中对每个功能进行权限检查,检查当前用户是否具有执行该功能的权限。可以使用ASP.NET的角色和授权管理机制来进行权限检查。可以使用AuthorizeAttribute对控制器或者Action进行授权,只有具有相应权限用户才能够访问。 4.禁用没有权限的功能 如果当前用户没有权限执行该功能,禁用该功能或者显示提示信息。可以使用ASP.NET的控件或者JavaScript代码来禁用没有权限的功能。 5.使用安全编码实践 使用安全编码实践来防止安全漏洞和攻击。例如,使用参数化查询来防止SQL注入攻击,使用加密算法来保护敏感数据,使用防止跨站点脚本攻击(XSS)等安全编码实践。 总之,在C#设置用户权限需要综合考虑不同的方面,包括身份验证、角色和授权管理、安全编码实践等。可以参考ASP.NET的官方文档和示例代码来了解如何在C#中更好地设置用户权限

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值