获得文件夹的权限

本文关键字:权限 文件夹 | 更新日期: 2023-09-27 17:53:22

我正在尝试找到正确的文件夹。目的是在这个文件夹中创建一个文件,当我要求我的程序创建这个文件。我几乎什么都试过了,可还是不行。

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说我有权限,但是当我想创建我的文件时,出现"unauthorizeexception"异常。

我尝试使用DirectoryInfo,像这样:

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

而不是直接使用"Directory"对象。另外,我认为我的问题是关于GetAccessRules,所以我试图使用安全标识符和NTAccount,两者都说我拥有这个文件夹(FullControl)的所有权利,而最后,我没有任何权利。当然我的路径是好的,我检查过了。

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

获得文件夹的权限

我认为你的代码的问题是,它没有检查有访问权限的特定用户。GetAccessControl获取所有用户的列表,这些用户有任何访问规则应用于文件夹,而不仅仅是您。

有一个很好的答案已经在这里做适当的检查:检查目录和文件写权限在。net