Mgmtclassgen.exe (厳密型クラス ジェネレーター)Mgmtclassgen.exe (Management Strongly Typed Class Generator)

厳密型クラス ジェネレーター (Mgmtclassgen.exe) ツールを使用すると、指定した WMI (Windows Management Instrumentation) クラスに対して、事前バインディングされたマネージド クラスをすばやく生成できます。The Management Strongly Typed Class Generator tool enables you to quickly generate an early-bound managed class for a specified Windows Management Instrumentation (WMI) class. 生成されたクラスを使用すると、WMI クラスのインスタンスにアクセスするために書く必要のあるコードを簡略化できます。The generated class simplifies the code you must write to access an instance of the WMI class.

構文Syntax

mgmtclassgen
WMIClass [options]
引数Argument 説明Description
WMIClassWMIClass 事前バインディングしたマネージド クラスを生成する対象の WMI クラスです。The Windows Management Instrumentation class for which to generate an early-bound managed class.
オプションOption 説明Description
/l language/l language 事前バインディングされたマネージド クラスの生成に使用する言語を指定します。Specifies the language in which to generate the early-bound managed class. language 引数として CS (C#、既定値)、VB (Visual Basic)、MC (C++)、または JS (JScript) を指定できます。You can specify CS (C#; default), VB (Visual Basic), MC (C++), or JS (JScript) as the language argument.
/m machine/m machine WMI クラスが常駐する、接続先のコンピューターを指定します。Specifies the computer to connect to, where the WMI class resides. 既定値はローカル コンピューターです。The default is the local computer.
/n path/n path WMI クラスが含まれている WMI 名前空間へのパスを指定します。Specifies the path to the WMI namespace that contains the WMI class. このオプションを指定しない場合、このツールは既定の Root\cimv2 名前空間に WMIClass のコードを生成します。If you do not specify this option, the tool generates code for WMIClass in the default Root\cimv2 namespace.
/o classnamespace/o classnamespace マネージド コード クラスを生成する先の .NET 名前空間を指定します。Specifies the .NET namespace in which to generate the managed code class. このオプションを指定しない場合、このツールは WMI 名前空間およびスキーマ プリフィックスを使用して名前空間を指定します。If you do not specify this option, the tool generates the namespace using the WMI namespace and the schema prefix. スキーマ プリフィックスはクラス名の一部で、アンダースコア (_) 文字の前に付きます。The schema prefix is the part of the class name preceding the underscore character. たとえば、Root\cimv2 名前空間内の Win32_OperatingSystem クラスの場合、このツールは ROOT.CIMV2.Win32 にクラスを生成します。For example, for the Win32_OperatingSystem class in the Root\cimv2 namespace, the tool would generate the class in ROOT.CIMV2.Win32.
/p filepath/p filepath 生成されたコードを保存するファイルへのパスを指定します。Specifies the path to the file in which to save the generated code. このオプションを指定しない場合、このツールは現在のディレクトリにファイルを作成します。If you do not specify this option, the tool creates the file in the current directory. WMIClass 引数を使用して生成したクラスと、そのクラスを保存したファイルには名前が付けられます。It names the class and file in which it generates the class using the WMIClass argument. クラスおよびファイルの名前は、WMIClass の名前と同じです。The name of the class and the file are the same as the name of the WMIClass. WMIClass にアンダースコア () 文字が含まれている場合は、アンダースコア () 文字の後に続く、クラス名の一部が使用されます。If WMIClass contains an underscore character, the tool uses the part of the class name following the underscore character. たとえば、WMIClass 名が Win32_LogicalDisk という形式の場合、生成されたクラスおよびファイルには "logicaldisk" という名前が付けられます。For example, if the WMIClass name is in the format Win32_LogicalDisk, the generated class and file is named "logicaldisk". ファイルが既に存在している場合は、既存のファイルが上書きされます。If a file already exists, the tool overwrites the existing file.
/pw password/pw password /m オプションで指定したコンピューターにログオンするときに使用するパスワードを指定します。Specifies the password to use when logging on to a computer specified by the /m option.
/u user name/u user name /m オプションで指定したコンピューターにログオンするときに使用するユーザー名を指定します。Specifies the user name to use when logging on to a computer specified by the /m option.
/?/? このツールのコマンド構文とオプションを表示します。Displays command syntax and options for the tool.

RemarksRemarks

Mgmtclassgen.exe は、ManagementClass.GetStronglyTypedClassCode メソッドを使用します。Mgmtclassgen.exe uses the ManagementClass.GetStronglyTypedClassCode method. したがって、任意のカスタム コード プロバイダーを使用して、C#、Visual Basic、および JScript 以外のマネージド言語でコードを生成できます。Therefore, you can use any custom code provider to generate code in managed languages other than C#, Visual Basic, and JScript.

生成されたクラスは、それらのクラスを生成する目的となったスキーマにバインドされます。Note that generated classes are bound to the schema for which they are generated. 基になるスキーマが変更された場合に、その変更をこのスキーマに反映するには、クラスを生成し直す必要があります。If the underlying schema changes, you must regenerate the class if you want it to reflect changes to the schema.

WMI CIM (Common Information Model) 型の、生成されたクラスのデータ型への割り当てを次の表に示します。The following table shows how WMI Common Information Model (CIM) types map to data types in a generated class:

CIM 型CIM type 生成したクラスのデータ型Data type in the generated class
CIM_SINT8CIM_SINT8 SByteSByte
CIM_UINT8CIM_UINT8 ByteByte
CIM_SINT16CIM_SINT16 Int16Int16
CIM_UINT16CIM_UINT16 UInt16UInt16
CIM_SINT32CIM_SINT32 Int32Int32
SIM_UINT32SIM_UINT32 UInt32UInt32
CIM_SINT64CIM_SINT64 Int64Int64
CIM_UINT64CIM_UINT64 UInt64UInt64
CIM_REAL32CIM_REAL32 SingleSingle
CIM_REAL64CIM_REAL64 DoubleDouble
CIM_BOOLEANCIM_BOOLEAN BooleanBoolean
CIM_StringCIM_String StringString
CIM_DATETIMECIM_DATETIME DateTime または TimeSpanDateTime or TimeSpan
CIM_REFERENCECIM_REFERENCE ManagementPathManagementPath
CIM_CHAR16CIM_CHAR16 CharChar
CIM_OBJECTCIM_OBJECT ManagementBaseObjectManagementBaseObject
CIM_IUNKNOWNCIM_IUNKNOWN オブジェクトObject
CIM_ARRAYCIM_ARRAY 上記のオブジェクトの配列Array of the above mentioned objects

WMI クラスを生成する場合は、次の動作に注意してください。Note the following behaviors when you generate a WMI class:

  • 標準パブリック プロパティまたはメソッドの名前と既存のプロパティまたはメソッドの名前が同じになる可能性があります。It is possible for a standard public property or method to have the same name as an existing property or method. このような事態が発生した場合、このツールは生成したクラスのプロパティまたはメソッドの名前を変更して、名前付けの競合を回避します。If this occurs, the tool changes the name of the property or method in the generated class to avoid naming conflicts.

  • 生成したクラスのプロパティまたはメソッドの名前がプログラミング言語のキーワード名と同じになる可能性があります。It is possible for the name of a property or method in a generated class to be a keyword in the target programming language. このような事態が発生した場合、このツールは生成したクラスのプロパティまたはメソッドの名前を変更して、名前付けの競合を回避します。If this occurs, the tool changes the name of the property or method in the generated class to avoid naming conflicts.

  • WMI では、修飾子は、クラス、インスタンス、プロパティ、またはメソッドを説明する情報を含む修飾子となります。In WMI, qualifiers are modifiers that contain information to describe a class, instance, property, or method. WMI は、ReadWriteKey などの標準の修飾子を使用して、生成したクラスのプロパティについて説明します。WMI uses standard qualifiers such as Read, Write, and Key to describe a property in a generated class. たとえば、Read 修飾子で修飾されたプロパティは、生成したクラスではプロパティ get アクセサーだけを伴って定義されます。For example, a property that is modified with a Read qualifier is defined only with a property get accessor in the generated class. Read 修飾子でマークされたプロパティは読み取り専用であるため、set アクセサーは定義されません。Because a property marked with the Read qualifier is intended to be read-only, a set accessor is not defined.

  • 数値プロパティを Values 修飾子および ValueMaps 修飾子によって修飾すると、このプロパティには、指定した許容値しか設定できないことを示すことができます。A numeric property can be modified by the Values and ValueMaps qualifiers to indicate that the property can be set only to specified permissible values. 列挙体は、このような Values および ValueMaps を使用して生成され、このプロパティは列挙体に割り当てられます。An enumeration is generated with these Values and ValueMaps and the property is mapped to the enumeration.

  • WMI では、インスタンスを 1 つだけを持つことのできるクラスを説明するために、シングルトンという用語を使用します。The WMI uses the term singleton to describe a class that can have only one instance. したがって、シングルトン クラスのパラメーターなしのコンストラクターは、クラスをそのクラスの唯一のインスタンスに初期化します。Therefore, the parameterless constructor for a singleton class will initialize the class to the only instance of the class.

  • WMI クラスは、オブジェクトであるプロパティを持つ場合があります。A WMI class can have properties that are objects. そのような型の WMI クラスに対して、厳密に型指定されたクラスを生成する場合は、埋め込まれたオブジェクト プロパティの型それぞれに対して厳密に型指定されたクラスを生成することを検討してください。When you generate a strongly typed class for this type of WMI class, you should consider generating strongly typed classes for the types of the embedded object properties. これにより、厳密に型指定する方法で、埋め込まれたオブジェクトにアクセスできるようになります。This will allow you to access the embedded objects in a strongly typed manner. 生成されたコードが、埋め込まれたオブジェクトの型を検出できない場合もあります。Note that the generated code might not be able to detect the type of the embedded object. このような場合は、生成されたコード内に、その旨をユーザーに通知するコメントが作成されます。In this case, a comment will be created in the generated code to notify you of this issue. これに応じて、生成された他のクラスをプロパティの型として指定するように、生成したコードを変更できます。You can then modify the generated code to type the property to the other generated class.

  • WMI では、CIM_DATETIME データ型のデータ値は、特定の日時または時間間隔を表すことができます。In WMI, the data value of the CIM_DATETIME data type can represent either a specific date and time or a time interval. データ値が日時を表す場合、生成されたクラスのデータ型は DateTime です。If the data value represents a date and time, the data type in the generated class is DateTime. データ値が時間間隔を表す場合、生成されたクラスのデータ型は TimeSpan です。If the data value represents a time interval, the data type in the generated class is TimeSpan.

Visual Studio .NET のサーバー エクスプローラー管理拡張機能を使用して、厳密に型指定されたクラスを生成することもできます。You can alternately generate a strongly typed class using the Server Explorer Management Extension in Visual Studio .NET.

WMI の詳細については、プラットフォーム SDK の「Windows Management Instrumentation」のトピックを参照してください。For more information about WMI, see the Windows Management Instrumentation topic in the Platform SDK documentation.

使用例Examples

Root\cimv2 名前空間内の Win32_LogicalDisk WMI クラスに対してマネージド クラスを C# コードで生成するコマンドを次に示します。The following command generates a managed class in C# code for the Win32_LogicalDisk WMI class in the Root\cimv2 namespace. このツールは、ROOT.CIMV2.Win32 名前空間内の c:\disk.cs にあるソース ファイルにマネージド クラスを書き込みます。The tool writes the managed class to the source file at c:\disk.cs in the ROOT.CIMV2.Win32 namespace.

mgmtclassgen Win32_LogicalDisk /n root\cimv2 /l CS /p c:\disk.cs  

生成したクラスをプログラムによって使用する方法を次のコード例に示します。The following code example shows how to use a generated class programmatically. まず、クラスのインスタンスが列挙され、パスが出力されます。First, an instance of the class is enumerated and the path is printed. 次に、初期化の対象となる生成したクラスのインスタンスが、WMI のインスタンスを使用して作成されます。Next, an instance of the generated class to be initialized is created with an instance of WMI. Root\cimv2 名前空間において ProcessWin32_Process に対して生成されたクラスであり、LogicalDiskWin32_LogicalDisk に対して生成されたクラスです。Process is the class generated for Win32_Process and LogicalDisk is the class generated for Win32_LogicalDisk in the Root\cimv2 namespace.

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);  
   }  
}  

関連項目See also