由于某些文件系统权限,Directory.Exist(..)失败

本文关键字:Exist 失败 Directory 于某些 文件系统 权限 | 更新日期: 2023-09-27 18:27:54

我的服务器上有一个文件系统和一个特定的路径结构,模拟用户可以访问它。

有一种情况是,用户无法检查自己的文件夹是否存在。

我的文件夹结构如下。

Base Path(only admin)
   +->User Profile(only admin)
      +->User's Area( owner user and andmin )

例如:

''基本路径''约翰的个人资料''约翰的区域

在文件系统(NTFS权限)上,John只有访问John's Area的权限。我需要用程序检查John's area的存在性。

Directory.Exists("...some other path parts...'Base Path'John's Profile'John's Area");

如果我模拟管理员,则返回true,但如果我模拟John,则返回false。

我认为John可以检查自己的文件夹是否存在,因为在文件系统中,即使他不能通过Base Path -> John's Profile浏览到他的区域,他也可以直接转到...'Base Path'John's Profile'John's Area

他需要什么权限来检查文件夹的存在?还是我缺少了一些基本的东西?

由于某些文件系统权限,Directory.Exist(..)失败

听起来这可能是一个ASP.NET网站。如果是这种情况,则您的应用程序由Internet Information Services托管。因此,您必须确保系统的工作进程对目录具有适当的权限。如果没有它,I/O函数将不会成功。

  • IIS_IUsr是我相信的用户

您必须记住,尽管它在IIS内的服务器上运行,但它并没有使用登录用户。它正在使用IIS内置用户

如果这不是在IIS中托管的,那么您的模拟方法应该可以工作。请确保它正确模拟帐户。

你也可以做这样的检查来验证:

public static bool ValidateIOPermission(string path)
{
     try
     {
          if(Directory.Exist(path))
               return true;
          else { Directory.CreateDirectory(path); }
     }
     catch(Exception ex) { return false; }
}

因此,如果它存在,它将return true;如果没有,它将尝试写入目录。如果写入失败,它将返回throw exception,返回一个false。所以你会知道它是否失败了。