ホームページ > バックエンド開発 > C++ > 汎用例外処理を使用せずに .NET で書き込み権限を効率的にチェックするにはどうすればよいですか?

汎用例外処理を使用せずに .NET で書き込み権限を効率的にチェックするにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-16 18:39:11
オリジナル
891 人が閲覧しました

How to Efficiently Check for Write Permissions in .NET Without Generic Exception Handling?

.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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート