Проверка, доступен ли файл / каталог только для чтения - PullRequest
1 голос
/ 27 сентября 2010

хорошо, так что я немного новичок в Си. Как проверить, доступен ли файл только для чтения в Windows.

Я пытался заставить что-то работать с функцией GetFileAttributes, но безрезультатно.

Учитывая путь к файлу, как правильно проверить, доступен ли он только для чтения?

Edit:

Так что я все еще застрял на этом. Я хочу проверить, есть ли у пользователя разрешение на добавление и редактирование файлов в 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);

но когда я делаю этот тест ненулевой, я == 3, и в ОС не появляется файл.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 27 сентября 2010

Вы забыли про ACL. Файл может иметь только бит, доступный только для чтения, но при этом иметь ограниченный ACL. Вы можете позвонить CreateFile и проверить код возврата. Или вызовите `AuthzAccessCheck '.

2 голосов
/ 27 сентября 2010

GetFileAttributes - правильный вызов Windows - см. Пример MSDN для использования

В этом примере тесты доступны только для чтения. Это проверка dwAttrs & FILE_ATTRIBUTE_READONLY, которая будет отлична от нуля, если файл доступен только для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...