FreeTime - Stefano Passatordi 's Blog


Libera la mente...ecco il Blog di Stefano Passatordi
Statistiche
  • Views Home Page: 153.329
  • Views Posts: 368.313
  • Views Gallerie: 706.632
  • 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 2024
lmmgvsd
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
Blogs Amici
    Links
      Copyright © 2002-2007 - Blogs 2.0
      dotNetHell.it | Home Page Blogs
      ASP.NET 2.0 Windows 2003