Mgmtclassgen.exe (Yönetim Türü Kesin Belirlenmiş Sınıf Oluşturucu)

Yönetim Kesin Belirlenmiş Sınıf Üreticisi aracı, belirtilen bir Windows Yönetim Araçları (WMI) sınıfı için erken bağlı yönetilen bir sınıfı hızlı bir şekilde üretmenize olanak tanır. Oluşturulan sınıf, WMI sınıfının bir örneğine erişmek için yazmanız gereken kodu basitleştirir.

Sözdizimi

mgmtclassgen
WMIClass [options]
Bağımsız değişken Açıklama
WMIClass Kendisi için erken bağlı yönetilen bir sınıf oluşturulacak Windows Yönetim Araçları sınıfı.
Seçenek Açıklama
/l dili Erken bağlı yönetilen sınıfın oluşturulacağı dili belirtir. Dil bağımsız değişkeni olarak CS (C#; varsayılan), VB (Visual Basic), MC (C++) veya JS (JScript) belirtebilirsiniz.
/m makine WMI sınıfının bulunduğu, bağlanılacak bilgisayarı belirtir. Varsayılan, yerel bilgisayardır.
/n yol WMI sınıfını içeren WMI ad alanına giden yolu belirtir. Bu seçeneği belirtmezseniz, araç varsayılan Root\cimv2 ad alanında WMIClass için kod oluşturur.
/o classnamespace Yönetilen kod sınıfının içinde üretileceği .NET ad alanını belirtir. Bu seçeneği belirtmezseniz, araç ad alanını WMI ad alanını ve şema önekini kullanarak üretir. Şema öneki, sınıf adının alt çizgi karakterinden önce gelen parçasıdır. Örneğin, Root\cimv2 ad alanında Win32_OperatingSystem sınıfı için araç, sınıfı ROOT içinde oluşturur. CIMV2. Win32.
/p dosya yolu Üretilen kodun içinde kaydedileceği dosyanın yolunu belirtir. Bu seçeneği belirtmezseniz, araç dosyayı geçerli dizinde oluşturur. WMIClass bağımsız değişkenini kullanarak sınıfını oluşturduğu sınıfı ve dosyayı adlandırıyor. Sınıfın ve dosyanın adı WMIClass adıyla aynıdır. WMIClass bir alt çizgi karakteri içeriyorsa, araç alt çizgi karakterini izleyen sınıf adının bölümünü kullanır. Örneğin, WMIClass adı Win32_LogicalDisk biçimindeyse, oluşturulan sınıf ve dosya "logicaldisk" olarak adlandırılır. Bir dosya zaten varsa, araç varolan dosyanın üzerine yazar.
/pw parolası /m seçeneği tarafından belirtilen bir bilgisayarda oturum açarken kullanılacak parolayı belirtir.
/u kullanıcı adı /m seçeneği tarafından belirtilen bir bilgisayarda oturum açarken kullanılacak kullanıcı adını belirtir.
/? Araç için komut sözdizimini ve seçenekleri görüntüler.

Açıklamalar

Mgmtclassgen.exe yöntemini kullanır ManagementClass.GetStronglyTypedClassCode . Bu nedenle, C#, Visual Basic ve JScript'ten başka yönetilen dillerde kod üretmek için, herhangi bir özel kod sağlayıcısını kullanabilirsiniz.

Üretilen sınıfların, kendisi için üretildikleri şemaya bağlı olduklarını unutmayın. Arka plandaki şema değişirse, şemada yapılan değişiklikleri yansıtmasını isterseniz, sınıfı yeniden oluşturmanız gerekir.

Aşağıdaki tabloda, WMI Ortak Bilgi Modeli (CIM) türlerinin üretilmiş bir sınıftaki veri türleriyle nasıl eşleştiği gösterilmektedir:

CIM türü Oluşturulan sınıf içinde veri türü
CIM_SINT8 SByte
CIM_UINT8 Bayt
CIM_SINT16 Int16
CIM_UINT16 UInt16
CIM_SINT32 Int32
SIM_UINT32 UInt32
CIM_SINT64 Int64
CIM_UINT64 UInt64
CIM_REAL32 Tek
CIM_REAL64 Çift
CIM_BOOLEAN Boolean
CIM_String Dize
CIM_DATETIME DateTime veya TimeSpan
CIM_REFERENCE Yönetim Yolu
CIM_CHAR16 Char
CIM_OBJECT ManagementBaseObject
CIM_IUNKNOWN Nesne
CIM_ARRAY Yukarıda sözü edilen nesnelerin dizisi

Bir WMI sınıfı oluşturduğunuzda, aşağıdaki davranışlara dikkat edin:

  • Standart bir genel özelliğin veya yöntemin, varolan bir özellikle veya yöntemle aynı ada sahip olması olanaklıdır. Bu durumda, araç, adlandırma çakışmalarından kaçınmak için, oluşturulan sınıfta özellik veya yöntemin adını değiştirir.

  • Oluşturulan bir sınıftaki bir özellik veya yöntemin adının hedef programlama dilinde bir anahtar sözcük olması olanaklıdır. Bu durumda, araç, adlandırma çakışmalarından kaçınmak için, oluşturulan sınıfta özellik veya yöntemin adını değiştirir.

  • WMI'da, niteleyiciler bir sınıfı, örneği, özelliği veya yöntemi tanımlamak için bilgi içeren değiştiricilerdir. WMI, oluşturulan bir sınıftaki bir özelliği açıklamak için Okuma, Yazma ve Anahtar gibi standart niteleyicileri kullanır. Örneğin, Okuma niteleyicisi ile değiştirilen bir özellik yalnızca oluşturulan sınıftaki bir özellik alma erişimcisi ile tanımlanır. Okuma niteleyicisi ile işaretlenmiş bir özelliğin salt okunur olması amaçlandığından, küme erişimcisi tanımlanmaz.

  • Sayısal bir özellik, özelliğin yalnızca belirtilen izin verilen değerlere ayarlanabileceğini belirtmek için Değerler ve ValueMaps niteleyicileri tarafından değiştirilebilir. Bu Değerler ve ValueMap'ler ile bir numaralandırma oluşturulur ve özelliği sabit listesiyle eşlenir.

  • WMI, yalnızca bir örneği olabilecek bir sınıf tanımlamak için singleton terimini kullanır. Bu nedenle, tek bir sınıfın parametresiz oluşturucu sınıfını sınıfın tek örneğine başlatır.

  • Bir WMI sınıfının, nesne olan özellikleri olabilir. Bu tür WMI sınıfı için kesin olarak belirlenmiş bir sınıf oluşturduğunuzda, katıştırılmış nesne özelliklerinin türleri için kesin olarak belirlenmiş sınıflar oluşturmayı düşünmelisiniz. Bu, katıştırılmış nesnelere kesin olarak belirlenmiş bir şekilde erişmenizi sağlar. Üretilen kodun gömülü nesnenin türünü algılayamayacağını unutmayın. Bu durumda, sorunu size bildirmek için, üretilen kodda bir açıklama oluşturulur. Sonra, özelliği üretilen diğer sınıfa yazmak için, üretilen kodu değiştirebilirsiniz.

  • WMI'da, CIM_DATETIME veri türünün veri değeri belirli bir tarih ve saati veya bir zaman aralığını gösterebilir. Veri değeri bir tarih ve saati temsil ederse, oluşturulan sınıftaki veri türü DateTime olur. Veri değeri bir zaman aralığını temsil ederse, oluşturulan sınıftaki veri türü TimeSpan'dır.

Alternatif olarak, Visual Studio .NET'teki Sunucu Gezgini Yönetim Uzantısı'nı kullanarak kesin olarak belirlenmiş bir sınıf oluşturabilirsiniz.

WMI hakkında daha fazla bilgi için Platform SDK belgelerindeki Windows Yönetim Araçları konusuna bakın.

Örnekler

Aşağıdaki komut, Root\cimv2 ad alanında Win32_LogicalDisk WMI sınıfı için C# kodunda bir yönetilen sınıf oluşturur. Araç, yönetilen sınıfı KÖK dizinindeki c:\disk.cs konumundaki kaynak dosyaya yazar. CIMV2. Win32 ad alanı.

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

Aşağıdaki kod örneği, oluşturulan bir sınıfın programsal olarak nasıl kullanılacağını göstermektedir. İlk olarak, sınıfın bir örneği numaralandırılır ve yol yazdırılır. Ardından, başlatılacak oluşturulan sınıfın bir örneği bir WMI örneğiyle oluşturulur. Process, Win32_Process için oluşturulan sınıftır ve LogicalDisk Root\cimv2 ad alanında Win32_LogicalDisk için oluşturulan sınıftır.

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

Ayrıca bkz.