在 C# 中可靠地檢查使用者對資料夾的寫入存取權
在對資料夾執行寫入操作之前,驗證使用者的寫入權限至關重要。本文為該任務提供了一種可靠的 C# 方法,改進了先前不太穩健的方法。
現有方法的限制:
之前的嘗試,例如hasWriteAccessToFolder()
,通常依賴Directory.GetAccessControl()
來檢索資料夾安全權限。 但是,此方法取決於使用者是否有足夠的權限查看這些安全設定。 此外,它可能無法準確檢測其他機制施加的寫入限制。
更可靠的解決方案:
一種更好的方法透過嘗試建立臨時檔案來直接測試寫入存取:
public bool IsDirectoryWritable(string dirPath, bool throwIfFails = false) { try { using (FileStream fs = File.Create(Path.Combine(dirPath, Path.GetRandomFileName()), 1, FileOptions.DeleteOnClose)) { } return true; } catch (Exception ex) { if (throwIfFails) throw; // Re-throw the exception for handling elsewhere else return false; } }
此函數嘗試建立一個具有隨機名稱的小型臨時檔案。 FileOptions.DeleteOnClose
確保自動清理。 成功表示有寫入權限;失敗(由 catch
區塊捕獲)表示缺乏權限。 throwIfFails
參數提供了錯誤處理的彈性。
主要改善與優點:
這個IsDirectoryWritable()
方法有幾個優點:
結論:
IsDirectoryWritable()
方法提供了一種穩健且準確的方法來檢查 C# 中資料夾的寫入存取權限,克服了先前方法的缺點並確保可靠的權限驗證。
以上是如何在 C# 中可靠地測試使用者對資料夾的寫入存取權限?的詳細內容。更多資訊請關注PHP中文網其他相關文章!