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

时间:2018-09-24 13:09:31

标签: windows winapi permissions directory-permissions

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

另一种正面处理方法是立即致电FindFirstFile,但这似乎是一种浪费(而且我首先还需要确定该项目是否是文件夹,因此还要做更多的工作)

1 个答案:

答案 0 :(得分:1)

关于我的问题的评论非常有用,可以为提出的问题提供最简单的解决方案,但是在进一步研究中,我发现无法枚举的文件夹是链接,它们在属性中设置了FILE_ATTRIBUTE_REPARSE_POINT位他们的WIN32_FIND_DATA::dwAttributes字段。对此进行检查就足以对这些物品实施特殊处理。