C#如何获取另一个用户的读/写权限? [复制]

Posted

技术标签:

【中文标题】C#如何获取另一个用户的读/写权限? [复制]【英文标题】:C# How to get Read/Write permissions of another user? [duplicate] 【发布时间】:2015-06-23 12:52:29 【问题描述】:

我需要检查某个路径的读/写权限。但最大的问题是,我不想检查我自己的,而是我想为其他用户检查它们

这会检查运行程序的用户。

System.Security.Principal.NTAccount

我如何检查例如用户“OTHERUSER”?

这是我目前的代码。

   private Boolean CheckZugriff(string str_projektpfad)
    
        str_projektpfad = Path.GetDirectoryName(str_projektpfad);
        bool isWriteAccess = false;
        try
        
            AuthorizationRuleCollection collection = Directory.GetAccessControl(str_projektpfad).GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
            foreach (FileSystemAccessRule rule in collection)
            
                if (rule.AccessControlType == AccessControlType.Allow)
                
                    isWriteAccess = true;
                    break;
                
            
        
        catch (UnauthorizedAccessException ex)
        
            isWriteAccess = false;
        
        catch (Exception ex)
        
            isWriteAccess = false;

        
        if (!isWriteAccess)
        
            //handle notifications                 
        

        return isWriteAccess;
    

【问题讨论】:

你能告诉我们一些关于 Directory.GetAccessControl 的事情吗? 【参考方案1】:

找到两件事可能对你有帮助...

1) 此代码检查为所有用户为文件夹设置的权限:

    string directory = "your path";

    DirectoryInfo di = new DirectoryInfo(directory);

    DirectorySecurity ds = di.GetAccessControl();

2) 此代码检查您的用户是否具有管理员权限:

bool isElevated;
WindowsIdentity identity = new WindowsIdentity("user principal name goes here");
WindowsPrincipal principal = new WindowsPrincipal(identity);
isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator);

如果用户不是管理员并且没有为他设置规则,这是合乎逻辑的 - 他无法访问该文件夹。不确定它是否能解决您的问题,但希望对您有所帮助。

【讨论】:

这只是有点帮助它不是我需要的,因为你的代码会给我所有的用户。我可以交叉检查所有用户的用途吗? ds 将如何帮助我?我和ds 有什么关系? 不确定您的方法是否可行。另一方面,现在您可以获得所有用户的读/写权限,找到为特定用户设置的权限规则应该不是什么大问题,对吧?这是一个很好的起点。 也许我很笨,但是我如何使用ds 来做你刚才说的?

以上是关于C#如何获取另一个用户的读/写权限? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

C# 将一个文件夹中的文件复制到另一个文件夹中

如何在 phpmyadmin 中设置数据库的读/写权限?

如何在使用 .NET 安装期间授予对文件夹的读/写权限

如何限制/授予对子进程内存的读/写访问权限?

ECS Fargate 上的 EFS 挂载 - 非 root 用户的读/写权限被拒绝

linux脚本如何一键授权并执行