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