Per recuperare le informazioni "Hardware" relative al computer (locale/remoto) si deve utilizzare Windows Management Interface (meglio conosciuto come WMI). E' possibile raggiungere WMI con Microsoft .NET Framework attraverso il namespace System.Management.

L'applicazione che segue mostra a video una piccola serie d'informazioni relative a:

  1. Supporto Infrarossi (IRDA)
  2. Produttore del Computer
  3. Modello del Computer
  4. Il nome del PC
  5. Il numero di processori
  6. Il nome del proprietario.

Lo scenario in cui, queste informazioni possono essere utili, sono molti.
Si pensi, ad esempio, di creare una applicazione per la trasmissione dati attraverso IRDA. Oppure un pannello di controllo Web del proprio WebServer. WMI non fornisce unicamente informazioni hardware, ma permette di programmare moltissimi/ se non tutti i parametri di Microsoft Windows. Un esempio su tutti è anche la possibilità di programmare Internet Information Services. Tralascio, per questa volta, la programmazione IIS (che con WMI è nettamente più veloce di ADSI) ed espongo l'applicazione.

Una banale Windows Forms composta da 2 Label, 1 RichTextBox ed 1 Bottone.
Il progetto referenzia System.Management.

Per comodità ho associato l'esecuzione della Query WMI (molto simile al Transact SQL), all'evento Click del bottone. Il codice è il seguente.

             private void button1_Click(object sender, System.EventArgs e)

             {

                    ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_ComputerSystem");

 

                    foreach (ManagementObject queryObj in searcher.Get())

                    {

                           richTextBox1.Text = "Supporto Infrarossi: " + queryObj["InfraredSupported"];

                           richTextBox1.Text += "\nProduttore: " + queryObj["Manufacturer"];

                           richTextBox1.Text += "\nModello: " + queryObj["Model"];

                           richTextBox1.Text += "\nNome PC: " + queryObj["Name"];

                           richTextBox1.Text += "\nNumero Processori: " + queryObj["NumberOfProcessors"];

                           richTextBox1.Text += "\nQuesto PC appartiene a: " + queryObj["PrimaryOwnerName"];

                    }

             }

Per questo esempio ho utilizzato solo una piccola parte del namespace Win32_ComputerSystem ma avrei potuto scegliere tra una vasta gamma di risultati interessanti. E' bene considerare WMI come un vero e proprio FrameWork per dialogare con il  sistema. I namespace su cui effettuare operazioni e ricerche sono molti (quasi quanti i livelli del Framework 1.1).