C#如何获得其他用户的读/写权限?

时间:2015-06-23 12:52:29

标签: c# permissions windows-users

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

这将检查运行该程序的用户。

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

1 个答案:

答案 0 :(得分:2)

找到两件可以帮助你的事情......

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

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