ホームページ > バックエンド開発 > C++ > .NET のディレクトリとファイルへの書き込み権限を効率的に確認するにはどうすればよいですか?

.NET のディレクトリとファイルへの書き込み権限を効率的に確認するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-16 18:42:12
オリジナル
737 人が閲覧しました

How to Efficiently Check for Write Permissions to Directories and Files in .NET?

.NET アプリケーションのファイルとディレクトリへの書き込みアクセスの検証

.NET 開発者は、ディレクトリ内でファイルを作成または変更する前に、書き込み権限を確認する必要があることがよくあります。 一般的ではありますが、理想的ではありませんが、一時ファイルを作成し、書き込み操作を試行し、その後ファイルを削除する方法があります。 このアプローチは機能的ではありますが、優雅さと堅牢性に欠けています。

優れたアプローチ: Directory.GetAccessControl() の活用

.NET Framework は、より効率的で信頼性の高いソリューションである Directory.GetAccessControl(path) メソッドを提供します。このメソッドは、指定されたディレクトリのアクセス制御リスト (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>
ログイン後にコピー

この洗練されたコードはディレクトリの ACL を分析し、書き込みアクセスを許可または拒否するルールを特定します。 書き込みアクセスが許可されており、明示的に拒否するルールがない場合にのみ true を返します。 これにより、一時ファイル方式と比較して、より正確かつ堅牢な権限チェックが実現します。

以上が.NET のディレクトリとファイルへの書き込み権限を効率的に確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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