我有一个问题实际上已经解决了,但我完全不明白为什么它会这样。
所以我有一个网络共享,我只想验证我是否有权在该共享中创建新文件和目录。我使用了两种方法来解决这个问题,但在这两种方法中我都得到了不同的结果。我的测试用例是我无法在该共享上创建文件和目录:
尝试创建一个新的目录——不是一个好方法
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/