× Aktuálně z oboru

Programátoři po celém světě dnes slaví Den programátorů [ clanek/2018091300-programatori-po-celem-svete-dnes-slavi-den-programatoru/ ]
Celá zprávička [ clanek/2018091300-programatori-po-celem-svete-dnes-slavi-den-programatoru/ ]

Získavanie informácii o systéme pomocou WMI v .NET

[ http://programujte.com/profil/2422-tomas-bosak/ ]Google [ ?rel=author ]       [ http://programujte.com/profil/118-zdenek-lehocky/ ]Google [ ?rel=author ]       1. 9. 2006       16 411×

Obsah článku:

  • WMI
  • WMI a .NET Framework
  • Triedy WMI
  • Príklad s použitím WMI

WMI

WMI (Windows Management Instrumentation [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_start_page.asp ]) je súčasť operačného systému Windows, ktorá poskytuje informácie o správe, riadení a kontrole prostredia. Administrátori môžu použiť WMI na zisťovanie a nastavovanie informácii o systémoch, aplikáciach, sieťach a iných komponentoch. Vývojári ho zasa môžu použiť pri vytváraní monitorovacích aplikácii, ktoré upozornia používateľa na výskyt dôležitej udalosti.

Účelom WMI je poskytnúť štandardizovaný prostriedok na riadenie počítačového systému, či už lokálneho počítača alebo celej siete. Riadený objekt môže byť hardwarový celok (napr. pamäť, port alebo pevný disk) alebo softwarový celok (napr. proces, služba alebo užívateľské konto). WMI ponúka rôzne druhy programovacích rozhraní, medzi ktoré patrí napr. VBScript, C++, ODBC (Open DataBase Connectivity), Visual Basic alebo HTML, ktorými môžu vývojári upravovať riadiace aplikácie.

Systémové požiadavky [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/system_requirements.asp ]
Dostupnosť komponentov WMI na operačných systémoch [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/operating_system_availability_of_wmi_components.asp ]
Architektúra WMI [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_architecture.asp ]
Používanie WMI [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/further_information.asp ]


WMI a .NET Framework

WMI v .NET Frameworku je postavené na pôvodnej WMI technológii, umožňuje ten istý vývoj aplikácii a naviac poskytuje výhody programovania v .NET [ http://msdn2.microsoft.com/en-us/library/ms186144.aspx ] pričom riadený (managed) kód aplikácii má niekoľko obmedzení oproti pôvodnému WMI [ http://msdn2.microsoft.com/en-us/library/ms186136.aspx ].

S použitím menného oboru .NET Frameworku System.Management [ http://msdn2.microsoft.com/en-us/library/system.management.aspx ] sa môžu vyvýjať aplikácie v C#, Visual Basicu .NET alebo J#, ktoré získavajú dáta a automatizujú administratívne úlohy pomocou WMI. Dajú sa vyvýjať aj aplikácie poskytujúce dáta WMI triedam cez obor mien System.Management.Instrumentation [ http://msdn2.microsoft.com/en-us/library/system.management.instrumentation.aspx ]. Menný obor System.Management obsahuje triedy na vykonávanie WMI operácii, zatiaľ čo System.Management.Instrumentation je určený na pridávanie inštrumentácie (vybavenia) do aplikácii.

WMI .NET architektúra [ http://msdn2.microsoft.com/en-us/library/ms257361.aspx ]
WMI .NET príklady [ http://msdn2.microsoft.com/en-us/library/ms257338.aspx ]
Viacej informácii o WMI .NET [ http://msdn2.microsoft.com/en-us/library/ms257341.aspx ]


Triedy WMI

Nižšie uvedená tabulka obsahuje špecifické sekcie WMI tried [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/further_information.asp ] so stručným popisom.

Sekcia Popis
Win32 Classes [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_classes.asp ] Hlavné triedy pre prácu s operačným systémom Windows.
WMI Registry Classes [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_registry_classes.asp ] Triedy určené na manipuláciu s registrami.
WMI System Classes [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_system_classes.asp ] Triedy poskytujúce základnú funkčnosť WMI.
IPMI Classes [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/intelligent_platform_management_interface__ipmi__classes.asp ] Triedy, ktoré dodávajú dáta z IPMI (Intelligent Platform Management Interface) poskytovateľa, keď je prístupný vhodný BMC (Baseboard Management Controller) hardware.
Monitor Display Classes [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/monitor_display_classes.asp ] Triedy poskytujúce dáta o zobrazovacej jednotke.
MSFT Classes [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/msft_classes.asp ] Iné triedy poskytujúce prostriedky a manipuláciu s osobitnými vlastnosťami operačného systému. Obsahujú WMI Troubleshooting Classes.
CIM Classes [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/cimclas.asp ] Triedy určené na vývoj vlastných WMI tried.
Standard Consumer Classes [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/standard_consumer_classes.asp ] Sada WMI udalostí určená na spúšťanie akcii s podmienkou prijatia ľubovoľnej udalosti.
MSMCA Classes [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/msmca_classes.asp ] Triedy poskytujúce prostriedky na manipuláciu a zobrazovanie systémových udalostí.
WMI C++ Classes [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_c_classes.asp ] Kompletný výpis WMI C++ tried.

Po vybratí nejakej možnosti zo sekcie tried (napr. Win32 Classes [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_diskdrive.asp ]) sa zobrazí užšia možnosť výberu so zameraním na určitú oblasť. Po ďalšom výbere (napr. Computer system hardware [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/computer_system_hardware_classes.asp ]) obsahuje dokumentácia konkrétne triedy, ktoré poskytujú informácie o požadovanej veci (napr. Win32_DiskDrive [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_diskdrive.asp ]).


Príklad s použitím WMI

V nasledujúcom príklade bude použitá WMI trieda Win32_DiskDrive [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_diskdrive.asp ] na získanie a výpis informácii o názve, výrobcovi, modely, veľkosti v bytoch, typu rozhrania a počtu partícii pevných diskov na počítači (výpis je smerovaný do tabuľky).

private ManagementClass manClass;
private ManagementObjectCollection manObjectCollection;

private void GetDiscsInfo() {
    listViewDiscs.Items.Clear();

    // nastavenie typu WMI ManagementClass
    manClass = new ManagementClass("Win32_DiskDrive");
    // vlozenie instancii do kolekcie
    manObjectCollection = manClass.GetInstances(); 
        	
    // vypis vybranych informacii o disku do ListView
    foreach(ManagementObject disc in manObjectCollection) {
        ListViewItem item = new ListViewItem(disc.GetPropertyValue("Name").ToString());
            	
        item.SubItems.Add(disc.GetPropertyValue("Manufacturer").ToString());
        item.SubItems.Add(disc.GetPropertyValue("Model").ToString());
        item.SubItems.Add(String.Format("{0:n0} B", Convert.ToUInt64(disc.GetPropertyValue("Size").ToString())));
        item.SubItems.Add(disc.GetPropertyValue("InterfaceType").ToString());
        item.SubItems.Add(disc.GetPropertyValue("Partitions").ToString());
        		
        listViewDiscs.Items.AddRange(new ListViewItem[]{item});
    }
}


Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2006082406-ziskavanie-informacii-o-systeme-pomocou-wmi-v-net/ ].