Connaitre les droits d'écritures sur un Fichier vb.net [Résolu]

Lyc@n 219 Messages postés dimanche 24 octobre 2010Date d'inscription 22 février 2014 Dernière intervention - 22 oct. 2013 à 12:23 - Dernière réponse : Lyc@n 219 Messages postés dimanche 24 octobre 2010Date d'inscription 22 février 2014 Dernière intervention
- 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!

Afficher la suite 

Votre réponse

6 réponses

ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 oct. 2013 à 12:52
0
Merci
Bonjour,
une gestion d'erreur serait là suffisante, non ?
Commenter la réponse de ucfoutu
Lyc@n 219 Messages postés dimanche 24 octobre 2010Date d'inscription 22 février 2014 Dernière intervention - 22 oct. 2013 à 13:42
0
Merci
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.
Commenter la réponse de Lyc@n
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 oct. 2013 à 17:16
0
Merci
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.
Commenter la réponse de ucfoutu
Lyc@n 219 Messages postés dimanche 24 octobre 2010Date d'inscription 22 février 2014 Dernière intervention - 22 oct. 2013 à 21:38
0
Merci
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!
Commenter la réponse de Lyc@n
lermite222 8728 Messages postés dimanche 8 avril 2007Date d'inscriptionContributeurStatut 27 janvier 2014 Dernière intervention - Modifié par lermite222 le 23/10/2013 à 01:42
0
Merci
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 .
Commenter la réponse de lermite222
Lyc@n 219 Messages postés dimanche 24 octobre 2010Date d'inscription 22 février 2014 Dernière intervention - 23 oct. 2013 à 12:04
0
Merci
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! :)
Commenter la réponse de Lyc@n

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.