获取文件夹的权限

时间:2014-03-26 10:09:59

标签: c# rights directory-security

我正试图找到一个文件夹。当我要求我的程序创建此文件时,目的是在此文件夹中创建一个文件。我几乎尝试了一切,但它仍然没有工作。

try
{

   DirectorySecurity ds = Directory.GetAccessControl(path);

   foreach (FileSystemAccessRule rule in ds.GetAccessRules(true, true, typeof(System.Security.Principal.SecurityIdentifier)))
   {
      if ((rule.FileSystemRights & FileSystemRights.CreateFiles) > 0 /*== FileSystemRights.CreateFiles)*/)
         return true;
   }
}
catch (UnauthorizedAccessException e)
{
   return false;
}
return false;

我的问题是:FileSystemAccessRule说我有权限,但是当我想创建我的文件时," unauthorizedexception"异常出现。

我尝试使用DirectoryInfo,就像那样:

DirectoryInfo di = new DirectoryInfo(path);
DirectorySecurity ds = di.GetAccessControl();

而不是使用"目录"对象直接。另外,我认为我的问题与GetAccessRules有关,所以我试图使用SecurityIdentifier和NTAccount,两者都说我在这个文件夹上有所有权利(FullControl),而最后,我没有任何权利。当然,我的道路很好,我查了一下。

有人知道在文件夹上获得权利的另一种方法,或者如果我做错了什么,一点帮助将是一种乐趣。

1 个答案:

答案 0 :(得分:0)

我认为您的代码存在的问题是不检查具有访问权限的特定用户。 GetAccessControl获取所有具有应用于该文件夹的访问规则的用户的列表,而不仅仅是您。

这里有一个很好的答案,如何正确检查:Checking for directory and file write permissions in .NET