开发者

Testing if a file/directory is read only

okay, so I'm a bit of a C newbie. How does one test whether a file is read only on windows.

I tried to get something working with the GetFileAttributes function, but to no avail.

Given a file's path, what is the proper way to test if it is read only?

Edit:

So I'm still stuck on this one. I want to check if the user has permission to add and edit files in C:\Program Files... and I can't seem to get any of the advice to work.

when I use !(GetFileAtrributes(path) &am开发者_如何学Gop; FILE_ATTRIBUTES_READONLY), it indicates that the directory is not read only. I then tried to write a file and test if it worked:

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

but when I do this test is non-null, i==3 and no file appears in the OS.

Any ideas?


GetFileAttributes is the correct Windows call - see MSDN example for use

The example tests read only and the test is check dwAttrs & FILE_ATTRIBUTE_READONLY and that will be non zero if the file is read only.


You are forgetting about the ACL. A file can have it's read-only bit clear but still have a restrictive ACL. You can call CreateFile and check the return code. Or call `AuthzAccessCheck'.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜