FreeTime - Stefano Passatordi 's Blog


Libera la mente...ecco il Blog di Stefano Passatordi
Statistiche
  • Views Home Page: 159.203
  • Views Posts: 377.167
  • Views Gallerie: 778.678
  • n° Posts: 210
  • n° Commenti: 148
Archivio Posts
Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005
Mappa

Recuperare tutti gli account di sistema con relative info

Per ottenere tutti gli account presenti nel sistema con relative informazioni basta semplicemente far ricorso, ancora una volta, a WMI.

Esemio in C#.

using System.Management;

//Questa funzione recupera tutti gli account presenti nel sistema e restituisce una lista contenente i nomi degli account.
public List<string> GetUsers()
        {
            List<string> users = null;
            ManagementObjectSearcher searcher = null;

            try
            {
                users = new List<string>();
                //Istanziamo un oggetto ManagementObjectSearcher passandogli la query di ricerca
                 searcher =new ManagementObjectSearcher("root\\CIMV2","SELECT * FROM Win32_UserAccount");

                //Per ogni oggetto ManagementObject trovato dal searcher ne recuperiamo il nome e lo inseriamo nella lista.
                foreach (ManagementObject queryObj in searcher.Get())
                {                 
                    users.Add(queryObj["Name"].ToString());
                }
            }
            catch (ManagementException e)
            {
                System.Diagnostics.Debug.Write(e.Message);
            }

            //Prima di ritornare la lista ricordiamoci di distruggere il searcher che è ormai inutile
            searcher.Dispose();
            return users;
        }


//Questa funzione recupera le informazioni relative ad un account il cui nome viene passato come parametro.
 public List<string> GetUserInfo(string name)
        {
            ManagementObjectSearcher searcher = null;
            List<string> info = null;

             try
            {
                //Anche in questo caso viene istanziato un oggetto ManagementObjectSearcher con una query specifica ad determinato account.
                searcher = new ManagementObjectSearcher("root\\CIMV2","SELECT * FROM Win32_UserAccount WHERE Name = '" + name + "'");

                info = new List<string>();

  //Per ogni oggetto ManagementObject trovato dal searcher ne recuperiamo le info e le inseriamo nella lista.
                foreach (ManagementObject queryObj in searcher.Get())
                {
                    info.Add(queryObj["Name"].ToString());
                    info.Add(queryObj["Description"].ToString());
                    info.Add(queryObj["Domain"].ToString());
                    info.Add(queryObj["Disabled"].ToString());
                    info.Add(queryObj["PasswordExpires"].ToString());
                    info.Add(queryObj["LocalAccount"].ToString());
                    info.Add(queryObj["Lockout"].ToString());
                    info.Add(queryObj["Status"].ToString());
                }
            }
            catch (ManagementException e)
            {
                System.Diagnostics.Debug.Write(e.Message);
            }

             //Prima di ritornare la lista ricordiamoci di distruggere il searcher che è ormai inutile
            searcher.Dispose();
            return info;
        }

Categoria: Programmazione
mercoledì, 02 ago 2006 Ore. 20.27
Ora e Data
Calendario
febbraio 2025
lmmgvsd
272829303112
3456789
10111213141516
17181920212223
242526272812
3456789
Blogs Amici
    Links
      Copyright © 2002-2007 - Blogs 2.0
      dotNetHell.it | Home Page Blogs
      ASP.NET 2.0 Windows 2003