0

我正试图找到一个文件夹。目的是当我要求我的程序创建这个文件时,在这个文件夹中创建一个文件。我几乎尝试了所有方法,但仍然无法正常工作。

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)上拥有所有权利,而最后,我没有任何权利. 当然,我的道路很好,我检查了它。

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

4

1 回答 1

0

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

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

于 2014-03-27T12:54:46.547 回答