在c#中写入文件夹或UNC路径的权限

时间:2013-03-12 17:57:45

标签: c# directory file-permissions unc

是否可以检查给定路径上的写权限是否可用,该路径可以是本地文件夹(c:\ temp)还是UNC(\ server \ share)?我不能使用try / catch,因为我可能有写权限但没有删除所以我无法删除创建的文件......

2 个答案:

答案 0 :(得分:3)

您使用权限要求,因此:

FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.Read, "C:\\test_r");
f2.AddPathList(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, "C:\\example\\out.txt");
try
{
  f2.Demand();
  // do something useful with the file here
}
catch (SecurityException s)
{
  Console.WriteLine(s.Message);
  // deal with the lack of permissions here.
}

指定所需的权限和所需的文件系统对象。如果您没有所需的权限,则会抛出安全性异常。

的更多细节

由于各种原因 - 竞争条件就是其中之一 - 它比检查NTFS文件系统权限更复杂。

显然,我们曾经想过这是UNC路径的无操作。对于detials,请参阅此问题Testing a UNC Path's "Accessability"

有点google-fu建议这个CodeProject类可能有用,但是:http://www.codeproject.com/Articles/14402/Testing-File-Access-Rights-in-NET-2-0

答案 1 :(得分:3)

是的,您可以使用FileIOPermission课程和FileIOPermissionAccess枚举。

FileIOPermissionAccess.Write

  

访问以写入或删除文件或目录。写访问权限包括删除和覆盖文件或目录。


FileIOPermission f = new FileIOPermission(FileIOPermissionAccess.Write, myPath);

try
{
   f.Demand();
   //permission to write/delete/overwrite
}
catch (SecurityException s)
{
   //there is no permission to write/delete/overwrite
}