.NET 書き込み権限を検証するための優れた方法: 例外処理を超えた
.NET 開発では、ディレクトリへの書き込みアクセスを確認するための一般的な方法として、ファイル書き込み操作を試行し、その結果生じる例外を処理することが含まれます。 一見簡単そうに見えますが、この方法は非効率的であり、ベストプラクティスではありません。
より堅牢で正確な代替方法は、Directory.GetAccessControl
メソッドを活用することです。これにより、ディレクトリのアクセス制御リスト (ACL) を直接検査でき、書き込み権限に関する最終的な答えが得られます。
次の改良されたアプローチを検討してください:
<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 中国語 Web サイトの他の関連記事を参照してください。