2010-09-26 8 views
1

okay, donc je suis un peu un C débutant. Comment tester si un fichier est lu uniquement sur Windows.Test si un fichier/répertoire est en lecture seule

J'ai essayé d'obtenir quelque chose qui fonctionne avec la fonction GetFileAttributes, mais en vain. Étant donné le chemin d'un fichier, quelle est la bonne façon de tester s'il est en lecture seule?

Edit:

Je suis toujours bloqué sur celui-ci. Je veux vérifier si l'utilisateur a l'autorisation d'ajouter et d'éditer des fichiers dans C: \ Program Files ... et je n'arrive pas à obtenir l'un des conseils pour fonctionner.

lorsque j'utilise! (GetFileAtrributes (chemin) & FILE_ATTRIBUTES_READONLY), cela indique que le répertoire n'est pas en lecture seule. J'ai ensuite essayé d'écrire un fichier et test si cela a fonctionné:

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

mais quand je fais ce test est non nul, i == 3 et aucun fichier apparaît dans le système d'exploitation.

Des idées?

+0

Désolé, mal interprété votre question. –

+0

duplication possible de [l'API de l'outil de gestion des autorisations de fichiers dans Windows] (http://stackoverflow.com/questions/3021698/effective-file-permissions-tools-api-in-windows) – bmargulies

Répondre

2

GetFileAttributes est l'appel Windows correct - voir MSDN example pour

Les tests par exemple en lecture seule et le test est de vérifier dwAttrs & FILE_ATTRIBUTE_READONLY et ce sera non nul si le fichier est en lecture seule.

2

Vous oubliez l'ACL. Un fichier peut avoir son bit en lecture seule, mais a toujours une liste de contrôle d'accès restrictive. Vous pouvez appeler CreateFile et vérifier le code retour. Ou appelez `AuthzAccessCheck '.

Questions connexes