2010-09-26 50 views
1

好吧,所以我是一个C新手。如何测试文件是否仅在Windows上读取。测试一个文件/目录是否只读

我试图得到一些GetFileAttributes函数,但无济于事。

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

编辑:

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

当我使用!(GetFileAtrributes(路径)& FILE_ATTRIBUTES_READONLY)时,它表示目录不是只读的。然后我试着写一个文件,并测试它是否工作:

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

但是当我做这个测试是不空,我== 3,没有文件出现在OS。

任何想法?

+0

对不起,误解了你的问题。 – 2010-09-27 00:09:07

+0

[有效的文件权限工具的api在Windows]的可能重复(http://stackoverflow.com/questions/3021698/effective-file-permissions-tools-api-in-windows) – bmargulies 2010-09-27 00:49:44

回答

2

GetFileAttributes是正确的Windows调用 - 参见MSDN example使用

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

2

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

相关问题