由于某些文件系统权限,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
。
他需要什么权限来检查文件夹的存在?还是我缺少了一些基本的东西?
听起来这可能是一个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
。所以你会知道它是否失败了。