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'.
精彩评论