2010-09-26 2 views
1

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

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

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

Edit:

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

Любые идеи?

+0

Извините, неверно сформулируйте ваш вопрос. – 2010-09-27 00:09:07

+0

Возможный дубликат [Эффективный файл разрешений api в windows] (http://stackoverflow.com/questions/3021698/effective-file-permissions-tools-api-in-windows) – bmargulies

ответ

2

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

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

2

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