首页 > 解决方案 > 检查应用程序是否具有对文件夹的读取权限(FindFirstFile 返回“访问被拒绝”但 _access 成功)

问题描述

我正在使用FindFirstFile/枚举文件夹的内容FindNextFile。我面临的问题是找到的一些子文件夹无法依次枚举,FindFirstFile返回“访问被拒绝”。所以我想检查这种情况,而不是首先将此类子文件夹包含在列表中。我找到了两种可能的解决方案:用 来检查路径_access(),或者用 来详细检查实际权限AccessCheck,但据说后者是重量级的,不像_access(),因为你需要打开和关闭一个句柄。问题是,_access对于我无法枚举的所有文件夹,总是成功FindFirstFile。除此之外还有其他解决方案AccessCheck吗?

另一种正面的方法是立即调用FindFirstFile,但这似乎又是一种浪费(我还需要首先确定该项目是否为文件夹,因此需要更多额外的工作)。

标签: windowswinapipermissionsdirectory-permissions

解决方案


对我的问题的评论很有帮助,并为所制定的问题提供了最简单的解决方案,但在进一步的研究中,我发现我无法枚举的文件夹是链接,它们FILE_ATTRIBUTE_REPARSE_POINT在其WIN32_FIND_DATA::dwAttributes字段中设置了属性位。检查这一点足以让我对这些项目实施特殊处理。


推荐阅读