IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

connaitre les droits d'un directory


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut connaitre les droits d'un directory
    Bonjour
    Je rame un peu pour trouver la bonne methode qui permet de connaitre les droits de l'utilisateur sur un répertoire
    Je trouve un peu de tout mais rien de tres clair !
    Pratiquement :

    A l'aide d'un folderbrowserdialog je permet a l'utilisateur de choisir ou creer un repertoire de travail

    A la sortie du Dialog, je voudrais m'assurer que l'utilisateur a bien les droits de lecture et d'ecriture sur ce repertoire

    Accessoirement qu'il n'a pas choisi un repertoire systeme
    Si quelqu'un aurait un exemple permettant d'aborder le sujet il est bienvenu

    Merci de votre aide

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Avec ça, tu devrais avoir les infos :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     File.GetAccessControl(fileName);

  3. #3
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Oui j'avais déja repéré cette methode
    Mais ce n'est helas ce n'est pas aussi trivial

    Premiererement ce sont les droits d'un repertoire que je cherche

    Il faut donc plutot utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Directory.GetAccessControl(path);
    Et a partir de la il y a encore du chemin a faire pour determiner les droits de l'utilisateur

    Pour le moment j'essaye de "bricoler" une methode qui devrait me donner un booleen selon un masque qui contiendrait les droits minimum attendus

    Je chipotte encore sur la definition de ce masque et j'analyse ce que peut contenir FileSystemRights

    Car je me dis que si FileSystemRights vaut FullControl, un test sur Read va peut etre me rendre false alors que "FullControl" est supérieur
    Donc je bricole en essai erreur car le sujet semble asser vaste

    Voici ou j'en suis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
        // ********************************************************************************
        static public bool HasRights(string path, WindowsIdentity account,FileSystemRights NeededRights)
        {
     
          if (path.Length <= 0)
          {
            return false;
          }
          if (!Directory.Exists(path))
          {
            return false;
          }
          DirectorySecurity dirSec = null;
          try
          {
            dirSec = Directory.GetAccessControl(path);
          }
          catch (UnauthorizedAccessException)
          {
            return false;
          }
     
          var rules = dirSec.GetAccessRules(true, true, typeof(NTAccount));
     
          WindowsPrincipal wp = new WindowsPrincipal(account);
     
          int R=0;
          foreach (FileSystemAccessRule rule in rules)
          {
            if (wp.IsInRole(rule.IdentityReference.Value))
            {
              if ((rule.FileSystemRights & FileSystemRights.FullControl) == FileSystemRights.FullControl)
              {
                R++;
              }
              if ((rule.FileSystemRights & FileSystemRights.Read) == FileSystemRights.Read)
              {
                R++;
              }
            }
          }
          return false;
        }

  4. #4
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Quand tu as fullcontrol, il met en coché le read aussi, donc c'est peut-être pas nécessaire de tester fullcontrol, mais juste ce que tu as besoin (en espérant que du point de vue C#, ce soit comme ça aussi )

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/11/2011, 23h24
  2. Réponses: 2
    Dernier message: 08/09/2010, 16h09
  3. Connaitre les droits de son user
    Par MrEddy dans le forum Oracle
    Réponses: 4
    Dernier message: 14/04/2010, 17h00
  4. API connaitre les droits sur un fichier/dossier
    Par cerede2000 dans le forum Windows
    Réponses: 9
    Dernier message: 27/10/2008, 15h17
  5. Connaitres les droits de l'utilisateur
    Par CrazySeb dans le forum Langage
    Réponses: 2
    Dernier message: 16/04/2006, 00h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo