Connaitre les droits d'écritures sur un Fichier vb.net

Résolu
Lyc@n Messages postés 219 Date d'inscription dimanche 24 octobre 2010 Statut Membre Dernière intervention 22 février 2014 - 22 oct. 2013 à 12:23
Lyc@n Messages postés 219 Date d'inscription dimanche 24 octobre 2010 Statut Membre Dernière intervention 22 février 2014 - 23 oct. 2013 à 12:04
Bonjour tout le monde!
Dans mon projet actuel, j'ai un sub qui scanne les disques dur en vus de fichiers avec certaines extentions, et à chaque fois qu'il trouve un fichier qui correspond aux bons critères, il l'ajoute dans une List. Mais régulièrement il liste des fichiers sur lequel on n'a pas les droits d'écriture, et dans le cadre de mon logiciel, seul les fichiers sur lequels on a les droits d'écritures m'interéssent. J'ai fais plusieurs recherches et je pense avoir trouvé quelque chose qui puisse m'aider: System.IO.File.GetAccessControl. Mais je n'arrive pas à m'en servir convenablement. Je ne vous donne pas mon code car ce serait inutile, la seule chose qu'il faut, c'est pouvoir connaitre les droits d'écritures sur un fichier en ayant son chemin. Quelqu'un pourrait il m'aider s'il vous plait? Merci beaucoup!

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 oct. 2013 à 12:52
Bonjour,
une gestion d'erreur serait là suffisante, non ?
0
Lyc@n Messages postés 219 Date d'inscription dimanche 24 octobre 2010 Statut Membre Dernière intervention 22 février 2014
22 oct. 2013 à 13:42
En fait, après mon scan, quand tout les fichier sont listés, un autre sub les suppriment, et là je fais ma gestion d'erreur, mais du coup, cette supression est plus lente vus que des erreurs surviennent quand on tente de supprimer les fichier qui n'ont pas les droits d'écritures. C'est pour optimiser la suppression des fichiers en suite que je voudrais lister seulement les fichiers avec droits d'écritures, ca raccourcirais la liste, réduirais le nombre d'erreurs et accélèreré la suppresion.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 oct. 2013 à 17:16
Existe toujours la possibilité d'utiliser la fonction GetFileSecurity de la librairie advapi32.dll de l'Api de Windows.
Tu pourrais également t'intéresser à la fonction GetNamedSecurityInfo de la même librairie.
Tant l'une que l'autre risquent toutefois de ne pas être toujours efficaces (notamment si fichiers partagés sur réseau).
Le plus sur et le plus infaillible reste de loin la gestion d'erreur.
0
Lyc@n Messages postés 219 Date d'inscription dimanche 24 octobre 2010 Statut Membre Dernière intervention 22 février 2014
22 oct. 2013 à 21:38
Merci pour ta réponse! Je vais voir cette librairie. Et merci de m'indiquer que la gestion d'erreur (Try Catch ici) est plus fiable, c'est une précision utile! Merci beaucoup!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 2
Modifié par lermite222 le 23/10/2013 à 01:42
Bonjour,

Imports System
Imports System.IO
....
....
Sub ...
Dim Attributs As FileAttributes
Attributs = File.GetAttributes(CheminEtFichier)
'32 = Lecture écriture
'33 = Lecture seule
'34 = Caché
'35 = 33 et 34

File.GetAccessControl c'est pour les droits d'utilisation, User, groupe, domaine.. etc.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
0
Lyc@n Messages postés 219 Date d'inscription dimanche 24 octobre 2010 Statut Membre Dernière intervention 22 février 2014
23 oct. 2013 à 12:04
Merci beaucoup! Ca marche impec! J'ai fait mon code et ça marche très bien:
Dim attributs As FileAttributes = IO.File.GetAttributes(file)

If CBool(attributs And FileAttributes.Hidden) = False And CBool(attributs And FileAttributes.ReadOnly) = False Then
'Le code ici...
End If

Merci beaucoup! :)
0
Rejoignez-nous