C# 由于某些文件系统权限,目录.Exist(…)失败
我的服务器上有一个文件系统和一个特定的路径结构,由模拟用户访问 在这种情况下,用户无法检查自己的文件夹是否存在 我的文件夹结构如下所示C# 由于某些文件系统权限,目录.Exist(…)失败,c#,impersonation,file-exists,C#,Impersonation,File Exists,我的服务器上有一个文件系统和一个特定的路径结构,由模拟用户访问 在这种情况下,用户无法检查自己的文件夹是否存在 我的文件夹结构如下所示 Base Path(only admin) +->User Profile(only admin) +->User's Area( owner user and andmin ) 例如: …\Base Path\John's Profile\John's area 在文件系统(NTFS权限)上,John只有访问权(NTFS权限)J
Base Path(only admin)
+->User Profile(only admin)
+->User's Area( owner user and andmin )
例如:
…\Base Path\John's Profile\John's area
在文件系统(NTFS权限)上,John只有访问权(NTFS权限)John的区域
。我需要以编程方式检查John's area
是否存在
Directory.Exists("...some other path parts...\Base Path\John's Profile\John's Area");
如果我模拟管理员,则返回true;如果我模拟John,则返回false
我以为John可以检查自己的文件夹是否存在——因为在文件系统中,即使他无法浏览基本路径->John的个人资料
到他的区域,他也可以直接转到…\Base Path\John的个人资料\John的区域
他需要什么权限来检查文件夹是否存在?还是我缺少一些基本的东西?嗯,听起来这可能是一个ASP.NET网站。如果是这样,您的应用程序将由Internet信息服务托管。因此,您必须确保系统的工作进程对该目录具有适当的权限。没有它,I/O功能将无法成功
是我相信的用户IIS\u IUsr
public static bool ValidateIOPermission(string path)
{
try
{
if(Directory.Exist(path))
return true;
else { Directory.CreateDirectory(path); }
}
catch(Exception ex) { return false; }
}
因此,如果它存在,它将
返回true
;如果没有,它将尝试写入目录。如果写入失败,它将抛出异常
,返回一个false
。这样您就知道它是否失败了。您确定…\
有效吗?我知道这在Windows XP中是可行的,但我不太确定Windows的最新版本。也许可以试试。\..\
来代替。这里的点只是为了掩盖不必要的路径。为了直观起见。只是一个想法:也许你应该以不同的方式访问当前用户文件夹,而不是通过基本路径?想一些类似的东西。谢谢你的想法,但我实际上并没有浏览那些文件夹。我只是想把事情说清楚。在windows上,如果我通过这些路径,它将失败,但我可以直接跳转到完整路径。但从编程角度看,我无法检查完整路径是否存在。我的水晶球显示用户帐户在父目录上没有“列表文件夹内容”。是的,它是一个mvc web应用程序。但是,当我模拟管理员时,它成功了,尽管它使用了IIS\u IUsr
内置用户(如果不管我模拟谁,它都像你说的那样使用内置用户),这不是有点奇怪吗?如果你不能写入
,显然模拟不正确。谁说我不能写入目录?