我尝试使用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中没有文件出现。
有什么想法吗?
答案 0 :(得分:2)
GetFileAttributes是正确的Windows调用 - 请参阅MSDN example以供使用
示例测试是只读的,测试是检查dwAttrs & FILE_ATTRIBUTE_READONLY
,如果文件是只读的,则该测试将为非零。
答案 1 :(得分:2)
您忘记了ACL。文件可以使其只读位清除但仍具有限制性ACL。您可以调用CreateFile并检查返回代码。或者调用`AuthzAccessCheck'。