gpt4 book ai didi

c - 为什么 C 函数 _stat 在拒绝访问文件夹时没有正确设置 errno

转载 作者:可可西里 更新时间:2023-11-01 11:39:33 27 4
gpt4 key购买 nike

我正在用 VS2005 开发一个 C 程序,我发现当文件夹访问受到限制时,我无法创建文件夹或从文件夹中删除任何内容,文件夹的 _stat 函数没有正确设置 errno . errno 设置为值 ENOENT。我绝对不能修改权限,所以我可以获得值 EACCES。 _stat 返回 0(无错误)或 errno 设置为 ENOENT。你能告诉我如何区分真正存在的文件夹和没有足够文件夹权限的用户吗?另一件我不明白的事情是什么特定的权限导致 _stat 返回 -1。当我查看我一直在测试 _stat 的文件夹的有效权限时,它在“拒绝”列中没有任何内容。即使“创建文件夹/附加数据”被选中,但我无法在其中创建文件夹。

谢谢 & BR -Matti

最佳答案

Windows 安全属性的粒度太细,无法使用 _stat() 进行测试。它的实现使用 FindFirstFile() API 函数,只有在未授予枚举文件的权限时才会失败。这种情况很少见,通常关闭的限制性更强的是写入或修改。

黑客攻击安全 API 来测试 ACL 通常是可以避免的,而且非常不可移植。当您尝试打开该文件时,您只是发现您没有必要的权限。完全可以接受,因为您无法在代码中执行任何操作来获得访问文件的权限。

关于c - 为什么 C 函数 _stat 在拒绝访问文件夹时没有正确设置 errno,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3799314/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com