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

Framework .NET Discussion :

[WMI] liste des utilisateurs


Sujet :

Framework .NET

  1. #1
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Juillet 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 128
    Par défaut [WMI] liste des utilisateurs
    Bonjour,

    Je cherche à récupérer la liste des répertoires partagés dont un utilisateur a les droits en écriture ou lecture en utilisant WMI à l'aide de dotnet. Les répertoires partagés peuvent être invisibles à l'aide de $.

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Regarde du coté de Win32_Share (http://msdn2.microsoft.com/en-us/library/aa394435.aspx) et Win32_ShareToDirectory (http://msdn2.microsoft.com/en-us/library/aa394436.aspx)

    Par exemple ce code te donne la liste (nom, chemin, type) des ressources partagées (dossiers, imprimantes, etc.). Le type 0 correspond aux dossiers.
    Code C# : 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
     
    using System;
    using System.Management;
    using System.Windows.Forms;
    namespace WMISample
    {
        public class MyWMIQuery
        {
            public static void Main()
            {
                try
                {
                    ManagementObjectSearcher searcher = 
                        new ManagementObjectSearcher("root\\CIMV2", 
                        "SELECT * FROM Win32_Share"); 
                    foreach (ManagementObject queryObj in searcher.Get())
                    {
                        Console.WriteLine("-----------------------------------");
                        Console.WriteLine("Win32_Share instance");
                        Console.WriteLine("-----------------------------------");
                        Console.WriteLine("Name: {0}", queryObj["Name"]);
                        Console.WriteLine("Path: {0}", queryObj["Path"]);
                        Console.WriteLine("Type: {0}", queryObj["Type"]);
                    }
                }
                catch (ManagementException e)
                {
                    MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
                }
            }
        }
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  3. #3
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Juillet 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 128
    Par défaut
    La liste des répertoires ne me pose aucun problème, ce que je souhaite moi c'est de récupérer pour un utilisateur donné la liste des répertoires partagés sur lesquels il a un droit d'écriture ou de lecture. Ou pour un répertoire partagé donné récupéré la liste des utilisateurs ayant des droits dessus.

    J'ai ce bout de code en Delphi.net :
    Code delphi : 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
    type
       TManagementBObjArray = array of ManagementBaseObject;
     
    procedure TForm1.Button1Click(Sender: TObject);
    var objClass:system.Management.ManagementClass;
         objShare:ManagementObject;
         obj2,obj3: ManagementBaseObject;
         valType:Int64;    
        trust:ManagementBaseObject;    
    begin
      objClass:=system.Management.managementClass.Create('Win32_Share');
      for objShare in objClass.GetInstances do
      begin
        valtype:=StrToInt64(objShare['Type'].ToString);
        if valType=0 then
          Memo1.Lines.Add(string(objShare['Name'])+' : '+string(objShare['Path']));
      end;
     
      mPath:=ManagementPath.Create('Win32_LogicalShareSecuritySetting=''CPP$''');
      objShare:=ManagementObject.Create(mPath);
      obj2:=ManagementBaseObject(objShare.InvokeMethod('GetSecurityDescriptor',nil,nil));
      obj3:=ManagementBaseObject(obj2['Descriptor']);
      memo1.Lines.add('ControlFlag : '+obj3['ControlFlags'].ToString);
      memo1.Lines.add(obj3['DACL'].GetType.ToString);
     
      for objShare in system.&Array(obj3['DACL']) do
      begin
        trust:=managementBaseObject(objShare['Trustee']);
        memo1.Lines.Add('Utilisateur : '+trust['Name'].ToString);
      end;
     end;

    Lorsque j'execute ce code, je récupère bien la liste des répertoires partagés, le descripteur de sécurité mais lorsque j'accède au DACL, je ne récupère qu'un seul élément qui correspond à l'utilisateur 'Tout le monde'. Dois-je régler quelque chose pour récupérer les informations de sécurité pour un utilisateur donné ? Merci d'avance.

Discussions similaires

  1. Liste des Utilisateurs (sessions) actifs
    Par gnawa dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 26/02/2007, 11h52
  2. Stocker la liste des utilisateurs connectés
    Par matthew016 dans le forum Développement Web en Java
    Réponses: 5
    Dernier message: 03/08/2006, 10h32
  3. [VB.NET]API qui récupère la liste des utilisateurs connectés
    Par cedric.synix dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/07/2006, 00h17

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