Informazioni di sistema con C#
Torniamo a scrivere un pò di articoli!
Oggi parliamo di come ottenere informazioni di sistema con C#.
Usnado il .NET Framework è possbile ottenere informazioni di sistema in diversi modi.
Io ho usato WMI, e nello specifico le Win 32 classes.
Come potete vedere le classi coprono praticamente qualsiasi esigenza.
Se volessimo ottenere informazioni hardware possiamo usaer le Computer Hardware Classes; come potete vedere c'è di tutto e di più.
Facciamo un esempio con gli Hard Disk:
using System;
using System.Management;
namespace SysInfo
{
class HardDisk
{
public static void query()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * from Win32_DiskDrive");
foreach (ManagementBaseObject mbo in searcher.Get())
{
Console.WriteLine("NAME: {0}", mbo.GetPropertyValue("Name"));
Console.WriteLine("MODEL: {0}", mbo.GetPropertyValue("Model"));
Console.WriteLine("MEDIA TYPE: {0}", mbo.GetPropertyValue("MediaType"));
Console.WriteLine("DESCRIPTION: {0}", mbo.GetPropertyValue("Description"));
Console.WriteLine();
}
}
catch (ManagementException ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
Utilizzando un oggetto ManagedObjectSearcher possiamo interrogare le classi come faremo con un database.
Ogni classe ha tutta una serie di proprietà; in questo caso io ho estrapolato:
- Name
- Model
- MediaType
- Description
Le proprietà sono ben commentate nella pagina della classe di interesse.
Facciamo un altro esempio prendendo in considerazione il Monitor:
using System;
using System.Management;
namespace SysInfo
{
class DesktopMonitor
{
public static void query()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * from Win32_DesktopMonitor");
foreach (ManagementBaseObject mbo in searcher.Get())
{
Console.WriteLine("NAME: {0}", mbo.GetPropertyValue("Name"));
Console.WriteLine("DESCRIPTION: {0}", mbo.GetPropertyValue("Description"));
Console.WriteLine("MONITOR TYPE: {0}", mbo.GetPropertyValue("MonitorType"));
Console.WriteLine("DISPLAY TYPE: {0}", Convert.ToUInt16(mbo.GetPropertyValue("DisplayType")));
Console.WriteLine("SCREEN W: {0}", Convert.ToUInt32(mbo.GetPropertyValue("ScreenWidth")));
Console.WriteLine("SCREEN H: {0}", Convert.ToUInt32(mbo.GetPropertyValue("ScreenHeight")));
Console.WriteLine();
}
}
catch (ManagementException ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
Come vedete si usa sempre lo stesso criterio; quello che cambia sono le proprietà.
Ad esempio qua prendo in considerazione anche ScreenWidth e ScreenHeight.
Ovviamente controllate anche di che tipo sono le proprietà; come vedete qua ho dovuto eseguire una conversione nel caso di ScreenWidth e ScreenHeight.
Enjoy!
c# managedobjectsearcher wmi Win32_Desk
Commentami!