Mgmtclassgen.exe (spravovaný generátor tříd se silnými typy)
Nástroj Management Strongly Typed Class Generator umožňuje rychle generovat spravovanou třídu s časnou vazbou pro zadanou třídu Windows Management Instrumentation (WMI). Vygenerovaná třída usnadňuje psaní kódu pro přístup k instanci třídy WMI.
Syntaxe
mgmtclassgen
WMIClass [options]
Argument | Popis |
---|---|
WMIClass | Třída WMI, pro kterou chcete generovat spravovanou třídu s časnou vazbou. |
Možnost | Popis |
---|---|
Jazyk /l | Určuje jazyk, ve kterém chcete vygenerovat spravovanou třídu s časnou vazbou. Jako argument jazyka můžete zadat CS (C#; default), VB (Visual Basic), MC (C++) nebo JS (JScript). |
/m stroj | Určuje počítač, na kterém je uložena třída WMI a ke kterému je třeba se připojit. Ve výchozím nastavení je to místní počítač. |
/n cesta | Určuje cestu k oboru názvů služby WMI, který obsahuje třídu WMI. Pokud tuto možnost nezadáte, nástroj vygeneruje kód pro WMIClass ve výchozím oboru názvů Root\cimv2. |
/o classnamespace | Určuje obor názvů .NET, ve kterém chcete vygenerovat spravovanou třídu kódů. Pokud tuto možnost nezadáte, nástroj vygeneruje obor názvů pomocí oboru názvů WMI a předpony schématu. Předpona schématu je část názvu třídy před podtržítkem. Například u třídy Win32_OperatingSystem v oboru názvů Root\cimv2 by nástroj vygeneroval třídu v ROOT. CIMV2. Win32. |
/p cesta k souboru | Určuje cestu k souboru, do kterého chcete uložit vygenerovaný kód. Pokud tuto možnost nezadáte, nástroj vytvoří soubor v aktuálním adresáři. Pojmenuje třídu a soubor, ve kterém generuje třídu pomocí argumentu WMIClass . Název třídy a souboru jsou stejné jako název třídy WMIClass. Pokud WMIClass obsahuje znak podtržítka, nástroj použije část názvu třídy za znakem podtržítka. Pokud je například název WMIClass ve formátu Win32_LogicalDisk, vygenerovaná třída a soubor má název "logicaldisk". Pokud soubor již existuje, nástroj přepíše existující soubor. |
/pw password | Určuje heslo, které se má použít při přihlášení k počítači určenému parametrem /m . |
/u uživatelské jméno | Určuje uživatelské jméno, které se má použít při přihlášení k počítači určenému parametrem /m . |
/? | Zobrazí syntaxi příkazu a možnosti nástroje. |
Poznámky
Mgmtclassgen.exe používá metodu ManagementClass.GetStronglyTypedClassCode . Proto můžete použít libovolného zprostředkovatele vlastního kódu k vygenerování kódu v jiných spravovaných jazycích než C#, Visual Basic a JScript.
Vygenerované třídy jsou svázány se schématem, pro které byly vygenerovány. Pokud se změní podkladové schéma, musíte znovu vygenerovat třídu, jestliže chcete, aby se změny projevily ve schématu.
Následující tabulka ukazuje, jak mapovat model WMI Common Information Model (CIM) na datové typy ve vygenerované třídě:
Typ CIM | Datový typ ve vygenerované třídě |
---|---|
CIM_SINT8 | SByte |
CIM_UINT8 | Bajt |
CIM_SINT16 | Int16 |
CIM_UINT16 | UInt16 |
CIM_SINT32 | Int32 |
SIM_UINT32 | UInt32 |
CIM_SINT64 | Int64 |
CIM_UINT64 | UInt64 |
CIM_REAL32 | Jednotlivý |
CIM_REAL64 | Dvojité desetinné číslo |
CIM_BOOLEAN | Logická hodnota |
CIM_String | Řetězec |
CIM_DATETIME | DateTime nebo TimeSpan |
CIM_REFERENCE | ManagementPath |
CIM_CHAR16 | Char |
CIM_OBJECT | ManagementBaseObject |
CIM_IUNKNOWN | Objekt |
CIM_ARRAY | Pole objektů uvedených výše |
Při generování třídy WMI si všimněte následujícího chování:
Standardní veřejná vlastnost nebo metoda může mít stejný název jako existující vlastnost nebo metoda. V tomto případě nástroj změní název vlastnosti nebo metody ve vygenerované třídě, aby předešel konfliktům názvů.
Název vlastnosti nebo metody ve vygenerované třídě může být klíčovým slovem v cílovém programovacím jazyku. V tomto případě nástroj změní název vlastnosti nebo metody ve vygenerované třídě, aby předešel konfliktům názvů.
Kvalifikátory jsou ve službě WMI modifikátory obsahující informace popisující třídu, instanci, vlastnost nebo metodu. Rozhraní WMI používá standardní kvalifikátory, jako je čtení, zápis a klíč , k popisu vlastnosti ve vygenerované třídě. Například vlastnost upravená pomocí kvalifikátoru pro čtení je definována pouze s vlastností get accessor ve vygenerované třídě. Vzhledem k tomu, že vlastnost označená kvalifikátorem pro čtení je určena jen pro čtení, není definován objekt set accessor.
Číselnou vlastnost lze upravit kvalifikátory Values a ValueMaps tak, aby značily, že vlastnost lze nastavit pouze na zadané přípustné hodnoty. Výčet se vygeneruje s těmito hodnotami a ValueMaps a vlastnost je mapována na výčet.
Služba WMI používá k popisu třídy, která může mít pouze jednu instanci, pojem singleton. Proto konstruktor bez parametrů pro jednu třídu inicializuje třídu na jedinou instanci třídy.
Třída WMI může mít vlastnosti, které jsou objekty. Při generování třídy silného typu pro tento typ třídy WMI byste měli zvážit generování tříd silného typu pro typy vložených vlastností objektu. To vám umožní přistupovat k vloženým objektům silným typem. Vygenerovaný kód nemusí být schopen rozpoznat typ vloženého objektu. V tomto případě bude v generovaném kódu vytvořen komentář, který vás na tento problém upozorní. Pak můžete vygenerovaný kód upravit a zadat vlastnost pro další generovanou třídu.
Ve službě WMI mohou datové hodnoty datového typu CIM_DATETIME představovat konkrétní datum a čas nebo časový interval. Pokud datová hodnota představuje datum a čas, datový typ ve vygenerované třídě je DateTime. Pokud datová hodnota představuje časový interval, datový typ ve vygenerované třídě je TimeSpan.
Alternativně můžete vygenerovat třídu silného typu pomocí rozšíření pro správu Průzkumníka serveru v sadě Visual Studio .NET.
Další informace o rozhraní WMI najdete v tématu Windows Management Instrumentation v dokumentaci k sadě SDK platformy.
Příklady
Následující příkaz vygeneruje spravovanou třídu v kódu jazyka C# pro třídu Win32_LogicalDisk WMI v oboru názvů Root\cimv2 . Nástroj zapíše spravovanou třídu do zdrojového souboru v umístění c:\disk.cs v kořenovém adresáři . CIMV2. Obor názvů Win32 .
mgmtclassgen Win32_LogicalDisk /n root\cimv2 /l CS /p c:\disk.cs
Následující příklad kódu ukazuje, jak používat vygenerovanou třídu při programování. Nejprve se vypočítá instance třídy a vytiskne se cesta. Poté se pomocí instance WMI vytvoří instance generované třídy, která má být inicializována. Process
je třída vygenerovaná pro Win32_Process a je třídou vygenerovanou pro Win32_LogicalDisk v oboru názvů Root\cimv2.LogicalDisk
Imports System
Imports System.Management
Imports ROOT.CIMV2.Win32
Public Class App
Public Shared Sub Main()
' Enumerate instances of the Win32_process.
' Print the Name property of the instance.
Dim ps As Process
For Each ps In Process.GetInstances()
Console.WriteLine(ps.Name)
Next ps
' Initialize the instance of LogicalDisk with
' the WMI instance pointing to logical drive d:.
Dim dskD As New LogicalDisk(New _
ManagementPath("win32_LogicalDisk.DeviceId=""d:"""))
Console.WriteLine(dskD.Caption)
End Sub
End Class
using System;
using System.Management;
using ROOT.CIMV2.Win32;
public class App
{
public static void Main()
{
// Enumerate instances of the Win32_process.
// Print the Name property of the instance.
foreach(Process ps in Process.GetInstances())
{
Console.WriteLine(ps.Name);
}
// Initialize the instance of LogicalDisk with
// the WMI instance pointing to logical drive d:.
LogicalDisk dskD = new LogicalDisk(new ManagementPath(
"win32_LogicalDisk.DeviceId=\"d:\""));
Console.WriteLine(dskD.Caption);
}
}