我正在用VS2005开发一个C程序,我发现当文件夹访问受限制的方式是我无法创build文件夹或从文件夹中删除任何东西时,文件夹的_stat函数不能正确设置errno。 errno被设置为值ENOENT。 我绝对不能修改权限,所以我可以得到价值EACCES。 _stat返回0(无错误)或者errno被设置为ENOENT。 你能告诉我如何区分文件夹真正存在和用户没有足够的权限文件夹? 另一件我不明白的是什么特定的权限结果_stat返回-1。 当我查看文件夹的有效权限时,我一直在testing_stat,它在“拒绝”列中没有任何内容。 即使“创build文件夹/追加数据”被检查,而我不能创build文件夹。
感谢&BR -Matti
Windows安全属性太细致,无法使用_stat()进行测试。 它的实现使用FindFirstFile()API函数,只有在枚举文件的权限没有被授予的情况下才会失败。 这种情况很少,通常关闭的限制性较强的是“写入”或“修改”。
攻击安全API来测试ACL往往是避免和非常不可移植的。 您只是发现,当您尝试打开文件时,您没有必要的权限。 完全可以接受,因为在代码中没有任何东西可以获得访问文件的权利。
我不是100%确定这一点,但你有没有尝试_doserrno ? 根据MSDN文档:
For I/O operations,use _doserrno to access the operating-system error-code equivalents of errno codes. For most non-I/O operations the value of _doserrno is undefined.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。