【问题标题】:Testing if a file/directory is read only测试文件/目录是否为只读
【发布时间】:2011-04-17 13:15:32
【问题描述】:

好的,所以我有点 C 新手。在windows上如何测试一个文件是否是只读的。

我尝试使用 GetFileAttributes 函数,但无济于事。

给定一个文件的路径,测试它是否为只读的正确方法是什么?

编辑:

所以我仍然坚持这一点。我想检查用户是否有权在 C:\Program Files... 中添加和编辑文件,但我似乎无法得到任何建议。

当我使用 !(GetFileAtrributes(path) & FILE_ATTRIBUTES_READONLY) 时,它表明该目录不是只读的。然后我尝试编写一个文件并测试它是否有效:

strcat(path,"\\testFile000");
FILE *test = 0;
test = fopen(path,"w");
int i = fwrite("ab",1,sizeof("ab"),test);

但是当我做这个测试是非空的,i==3 并且没有文件出现在操作系统中。

有什么想法吗?

【问题讨论】:

标签: c windows


【解决方案1】:

您忘记了 ACL。文件可以将其只读位清除,但仍具有限制性 ACL。您可以调用 CreateFile 并检查返回码。或调用“AuthzAccessCheck”。

【讨论】:

    【解决方案2】:

    GetFileAttributes 是正确的 Windows 调用 - 请参阅 MSDN example 以供使用

    示例测试只读,测试是检查dwAttrs & FILE_ATTRIBUTE_READONLY,如果文件是只读的,那将是非零。

    【讨论】:

      猜你喜欢
      • 2022-11-30
      • 2011-12-04
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 2014-04-01
      相关资源
      最近更新 更多