加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 对目录的追加和写入访问 – FileIOPermission给出不好的结

发布时间:2020-12-15 07:51:47 所属栏目:百科 来源:网络整理
导读:我有一个问题实际上已经解决了,但我完全不明白为什么它会像这样. 所以我有一个网络共享,我想简单地验证我是否有权在该共享中创建新文件和目录.我用了两种方法来解决这个问题,但两者都得到了不同的结果.我的测试用例是我无法在该共享上创建文件和目录: 试图
我有一个问题实际上已经解决了,但我完全不明白为什么它会像这样.

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

试图创建一个新的目录 – 不是一个好方法

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

这是一种我根本不喜欢的方式,但它有效…我在这里有一个例外,所以它正确地说我没有特定路径的权限.

使用FileIOPermission – 更好的方式

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

通过这种方法,我没有任何异常,所以它告诉我,我有权创建新文件 – 实际上并非如此.

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

解决方法

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

查看this post以查看FileIOPermission在封面下的实际操作.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读