C# でのフォルダーへのユーザーの書き込みアクセスを強力にチェックする
フォルダーに対して書き込み操作を実行する前に、ユーザーの書き込み権限を確認することが重要です。この記事では、以前の堅牢性の低いアプローチを改良した、このタスクのための信頼できる C# メソッドを紹介します。
既存のメソッドの制限:
hasWriteAccessToFolder()
などの以前の試みでは、フォルダーのセキュリティ権限を取得するために Directory.GetAccessControl()
に依存することがよくありました。 ただし、この方法は、ユーザーがそれらのセキュリティ設定を表示するための十分な権限を持っていることに依存します。 さらに、他のメカニズムによって課された書き込み制限を正確に検出できない可能性があります。
より信頼性の高いソリューション:
優れた方法では、一時ファイルを作成して書き込みアクセスを直接テストします。
<code class="language-csharp">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; } }</code>
この関数は、ランダムな名前で小さな一時ファイルを作成しようとします。 FileOptions.DeleteOnClose
は自動クリーンアップを保証します。 成功は書き込みアクセスを示します。失敗 (catch
ブロックによってキャッチされる) は、権限がないことを示します。 throwIfFails
パラメータにより、エラー処理が柔軟になります。
主な改善点と利点:
この IsDirectoryWritable()
メソッドには、いくつかの利点があります。
結論:
IsDirectoryWritable()
メソッドは、C# でフォルダーへの書き込みアクセスをチェックする堅牢かつ正確な方法を提供し、以前のアプローチの欠点を克服し、信頼性の高いアクセス許可の検証を保証します。
以上がC# でフォルダーへのユーザーの書き込みアクセスを確実にテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。