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 :

Lire les autorisations d'un dossier partagé


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 27
    Points
    27
    Par défaut Lire les autorisations d'un dossier partagé
    Bonjour,

    J'ai un dossier partagé, j'ai défini les autorisations au niveau du partage pour différents utilisateurs et réglé les droits d'accès au niveau de la sécurité.

    J'aimerais écrire un programme C# qui m'écrive en console les droits d'un certain utilisateur pour ce partage. J'ai déjà réussi à récupérer les informations de sécurité mais je ne trouve pas comment faire pour obtenir les informations du partage.

    Quelqu'un aurait-il une piste ? Parce que google me renvoie chaque fois à comment partager un dossier mais je voudrais des informations sur un partage existant moi.

    J'ai déjà regardé du côté de WMI et Win32_Share mais je n'obtiens que des informations générale sur le partage pas sur les autorisations du partage.

    Merci de votre aide.

  2. #2
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Salut.

    Effectivement, Win32_Share ne permet d'obtenir que des informations générales sur un partage.

    Mais grâce à la combinaison des classes Win32_Trustee, Win32_ACE et Win32_SecurityDescriptor, pour l'avoir déjà utilisé, je sais qu'il est possible de donner des droits sur un partage à des personnes données.

    J'imagine donc qu'il est possible de faire le chemin inverse et d'obtenir la liste des personnes ayant des autorisations ainsi que leurs autorisations respectives à l'aide de ces trois mêmes classes .

    Bon courage

    PS : il faut également regarder du côté des classes NTAccount et SecurityIdentifier.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    Merci beaucoup grâce à ça, j'ai trouvé ce qu'il me fallait dans la MSDN et voilà un exemple au cas où çà servirait à quelqu'un...

    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
    44
    45
    46
    47
    48
    49
    50
     
        uint LIST_FOLDER = 1;
        uint CREATE_FILE = 2;
        uint CREATE_SUBFOLDER = 4;
        uint CHANGE_PERMISSION = 262144;
     
          ManagementScope scope = new ManagementScope("\\root\\cimv2");
          scope.Options.Impersonation = ImpersonationLevel.Impersonate;
          scope.Options.EnablePrivileges = true;
     
          ManagementPath wmiPath = new ManagementPath("Win32_LogicalShareSecuritySetting");
          ManagementClass wmiClass = new ManagementClass(scope, wmiPath, new ObjectGetOptions(null));
     
          foreach (ManagementObject logicalShareSecuritySetting in wmiClass.GetInstances())
          {
            if (logicalShareSecuritySetting.Properties["Name"].Value.ToString().Equals("dropbox"))
            {
              ManagementBaseObject inParams = logicalShareSecuritySetting.GetMethodParameters("GetSecurityDescriptor");
              ManagementBaseObject outParams = logicalShareSecuritySetting.InvokeMethod("GetSecurityDescriptor", inParams, null);
              if(((uint)(outParams.Properties["ReturnValue"].Value)) == 0){
                ManagementBaseObject securityDescriptor = ((ManagementBaseObject)(outParams.Properties["Descriptor"].Value));
                ManagementBaseObject[] dacl =((ManagementBaseObject[])(securityDescriptor.Properties["Dacl"].Value)); 
                foreach(ManagementBaseObject d in dacl){
                  ManagementBaseObject trustee = ((ManagementBaseObject)(d.Properties["Trustee"].Value));
                  String user=trustee.Properties["Name"].Value.ToString();
                  if(user.Equals("corne")){
                    Console.WriteLine(d.Properties["AccessMask"].Value.ToString());
                    UInt32 accessMask = (UInt32) d.Properties["AccessMask"].Value;
                    StringBuilder rights = new StringBuilder();
                    if ((accessMask & CHANGE_PERMISSION) == CHANGE_PERMISSION)
                    {
                      rights.Append("TOTAL ");
                    }
                    if ((accessMask & CREATE_FILE) == CREATE_FILE)
                    {
                      rights.Append("WRITE ");
                    }
                    if ((accessMask & LIST_FOLDER) == LIST_FOLDER)
                    {
                      rights.Append("READ");
                    }
     
                    Console.WriteLine(rights.ToString());
                  }
                }
              }else{
                Console.WriteLine("Couldn't get securityDescriptor");
              }
            }
          }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour lire les titres d'un dossier
    Par cosmoff dans le forum Débuter
    Réponses: 12
    Dernier message: 05/08/2013, 09h54
  2. [MySQL] Lire les fichiers d'un dossier
    Par Kitetkat dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/03/2012, 04h27
  3. Réponses: 3
    Dernier message: 07/02/2008, 13h34
  4. Réponses: 1
    Dernier message: 16/10/2006, 18h07
  5. [C#] Changer les Autorisations d'un dossier
    Par dips dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/06/2004, 13h29

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