FreeTime - Stefano Passatordi 's Blog


Libera la mente...ecco il Blog di Stefano Passatordi
Statistiche
  • Views Home Page: 161.549
  • Views Posts: 380.814
  • Views Gallerie: 794.634
  • 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
aprile 2025
lmmgvsd
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011
Blogs Amici
    Links
      Copyright © 2002-2007 - Blogs 2.0
      dotNetHell.it | Home Page Blogs
      ASP.NET 2.0 Windows 2003