测试文件/目录是否为只读

时间:2010-09-26 23:58:02

标签: c windows

好的,所以我有点像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并且OS中没有文件出现。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

您忘记了ACL。文件可以使其只读位清除但仍具有限制性ACL。您可以调用CreateFile并检查返回代码。或者调用`AuthzAccessCheck'。