c# - 追加和写入目录的访问权限——FileIOPermission 会产生不好的结果吗?

标签 c# .net file-permissions directoryinfo

我有一个问题实际上已经解决了,但我完全不明白为什么它会这样。

所以我有一个网络共享,我只想验证我是否有权在该共享中创建新文件和目录。我使用了两种方法来解决这个问题,但在这两种方法中我都得到了不同的结果。我的测试用例是我无法在该共享上创建文件和目录:

尝试创建一个新的目录——不是一个好方法

try
{
    var testPath = Path.Combine(path, testDirectory)
    Directory.CreateDirectory(testPath)
}
catch
{
    // No access
}

这是一种我根本不喜欢的方式,但它有效......我这里有一个异常(exception),所以它正确地说我没有特定路径的权限。

使用 FileIOPermission — 更好的方法

try
{
    var writePermission = new FileIOPermission(FileIOPermissionAccess.Write, path)
    var appendPermission = new FileIOPermission(FileIOPermissionAccess.Append, path)
    writePermission.Demand()
    appendPermission.Demand()
}
catch
{
    // No access
}

使用这种方法我没有任何异常(exception),所以它对我说我有创建新文件的权限——这实际上不是真的。

有人知道第二种方法有什么问题吗?

最佳答案

FileIOPermission 不检查文件/目录的实际权限。它更像是“如果我不必担心 ACL,我能访问它吗?”检查。

this post看看 FileIOPermission 在幕后真正做了什么。

然后,看this post了解如何查询实际的文件系统 ACL 以查看您是否可以读/写文件。

关于c# - 追加和写入目录的访问权限——FileIOPermission 会产生不好的结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21623343/

相关文章:

Git:服务器上多个用户的 repo

c# - 如何从整数值中获取月份名称?

c# - GMail 未显示我使用 System.Net.Mail 发送的内联图像 (cid)

java - FileNotFound(访问被拒绝)java.io 上的异常

.net - XP上的vb.net系统提示音

.net - Azure Application Insights 未显示整个事件链(在事件驱动的应用程序中),但所有遥测数据都在那里

linux - linux修改目录权限

c# - 从另一个表单打开表单收到错误C#

c# - 我可以使用SQlite访问MySQL数据库吗

C#/VB .Net 性能调优,生成所有可能的彩票组合