簡體   English   中英

對C#中的文件夾或UNC路徑的寫權限

[英]Write permissions on a folder or UNC path in c#

有什么方法可以檢查給定路徑上的寫權限是否可用,該路徑可能是本地文件夾(c:\\ temp)或UNC(\\ server \\ share)? 我無法使用try / catch,因為我可能具有寫權限,但無法刪除,因此無法刪除創建的文件...

您使用權限需求 ,因此:

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.
}

指定所需的權限和所需的文件系統對象。 如果您沒有所需的權限,則會引發Security異常。 有關更多詳細信息,請訪問

由於種種原因(競爭條件就是其中之一),它比檢查NTFS文件系統權限看起來要復雜得多。

顯然,我們不久前就發現這是UNC路徑的禁忌之選。 有關詳細信息,請參見測試UNC路徑的“可訪問性”這個問題。

一點Google-fu建議您使用此CodeProject類,不過: http : //www.codeproject.com/Articles/14402/Testing-File-Access-Rights-in-NET-2-0

是的,您可以使用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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM