在 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中文网其他相关文章!