驗證 .NET 寫入權限的高階方法:超越異常處理
在 .NET 開發中,確認目錄的寫入存取權的常見做法包括嘗試檔案寫入作業並處理任何由此產生的例外狀況。 雖然看似簡單,但這種方法效率低下,而且不是最佳實踐。
更強大和更精確的替代方案是利用 Directory.GetAccessControl
方法。這允許直接檢查目錄的存取控制清單(ACL),提供有關寫入權限的明確答案。
考慮這種改進的方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <code class = "language-csharp" > public static bool HasWritePermissionOnDir(string path)
{
bool writeAllowed = false;
bool writeDenied = false;
var accessControlList = Directory.GetAccessControl(path);
if (accessControlList == null) return false;
var accessRules = accessControlList.GetAccessRules(true, true, typeof(System.Security.Principal.SecurityIdentifier));
if (accessRules == null) return false;
foreach (FileSystemAccessRule rule in accessRules)
{
if ((FileSystemRights.Write & rule.FileSystemRights) != FileSystemRights.Write) continue ;
if (rule.AccessControlType == AccessControlType.Allow) writeAllowed = true;
else if (rule.AccessControlType == AccessControlType.Deny) writeDenied = true;
}
return writeAllowed && !writeDenied;
}</code>
|
登入後複製
此功能仔細檢查「允許」和「拒絕」規則,提供對寫入權限的全面評估。 理解「標誌」的概念是解釋程式碼邏輯的關鍵。
透過使用Directory.GetAccessControl
,開發人員可以在其.NET應用程式中實現精確且有效率的寫入權限檢查,取代容易出錯的基於異常的方法。
以上是如何在不進行通用異常處理的情況下有效檢查 .NET 中的寫入權限?的詳細內容。更多資訊請關注PHP中文網其他相關文章!