我的服务器上有一个文件系统和一个特定的路径结构,由模拟用户访问。
有一种情况是用户无法检查自己的文件夹是否存在。
我的文件夹结构如下。
Base Path(only admin)
+->User Profile(only admin)
+->User's Area( owner user and andmin )
举个例子:
... \ Base Path \ John的个人资料\ John的区域
在文件系统上(NTFS权限),John只有权访问(NTFS权限)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
。
检查文件夹是否存在需要什么权限?或者我遗失了什么基本的东西?
答案 0 :(得分:0)
嗯,听起来这可能是一个 ASP.NET 网站。如果是这种情况,您的应用程序将由 Internet信息服务托管。因此,您必须确保系统的工作进程具有对目录的适当权限。没有它, 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
。所以你知道它是否失败了。