Mgmtclassgen.exe (إدارة مولد الفئة المكتوبة بشدة)
أداة إدارة مولد فئة مكتوبة بشدة تمكنك من توليد فئة مدارة لفئة (Windows Management Instrumentation (WMI محددة. الفئة التي يتم توليدها تبسط الرمز التعليمات البرمجية التي يجب عليك كتابتها للوصول إلى مثيل فئة WMI.
يتم تثبيت أداة "إدارة مولد الفئة المكتوبة بشدة" تلقائياً مع Visual Studio. و لتشغيل الأداة استخدم موجه أوامر Visual Studio.. في موجه الأوامر، اكتب ما يلي:
mgmtclassgen WMIClass [options]
الوسيطة |
الوصف |
---|---|
فئة WMI |
فئة Windows Management Instrumentation التي من أجلها يتم إنشاء مثيل لفئة مدارة مضمنة مبكراً. |
الخيار |
الوصف |
---|---|
/l لغة |
تحدد اللغة التي فيها يتم إنشاء فئة مدارة منضمة مبكراً. يمكنك تحديد cs#C الإفتراضي , VB Visual Basic HMD (ملحقات مدا لـ C++) vj (مرئي J#) أو js JScript كوسيطة اللغة. |
/m machine |
تعين الكمبيوتر الذي سيتم الإتصال إليه, حيث تتواجد فئة WMI. الافتراضي هو الكمبيوتر المحلي. |
/n path |
يقوم بتعيين المسار إلى مساحة الاسم WMI الذي يحتوي على فئة WMI. إذا لم تحدد هذا الخيار ,الأداة تقوم بإنشاء تعليمات برمجية لـ WMIClass في مساحة الإسم Root\cimv2 الإفتراضية. |
/o classnamespace |
تعين مساحة الاسم NET. الذي فيه يتم إنشاء فئة التعليمات البرمجية المدارة. إذا لم تحدد هذا الخيار, الأداة تقوم بإنشاء مساحة الإسم باستخدام مساحة الاسم WMI و البادئة مخطط. بادئة مخطط هو الجزء من اسم الفئة السابق لحرف التسطير السفلي. على سبيل المثال، بالنسبة لفئة Win32_OperatingSystem في مساحة الإسم Root\cimv2, الأداة تقوم بإنشاء الفئة في ROOT.CIMV2.Win32. |
/p filepath |
يقوم بتعيين المسار إلى الملف الذي يتم فيه حفظ التعليمات البرمجية المنشأة. إذا لم تحدد هذا الخيار, الأداة تقوم بإنشاء الملف في الدليل الحالي. تقوم بتسمية الفئة و الملف الذي فيهما تقوم بانشاء الفئة باستخدام الوسيطة WMIClass. اسم الفئة و الملف هي نفس اسم WMIClass. إذا WMIClass يحتوي على حرف تسطير سفلي , الأداة تستخدم الجزء من اسم الفئة الذي يتبع حرف التسطير السفلي(_). على سبيل المثال، إذا تنسيق إسم WMIClass هو Win32_LogicalDisk،فإن الفئة و الملف المنشأة تسمى "logicaldisk". فإذا كان الملف موجوداً بالفعل, الأداة تقوم بالكتابة فوق الملف الموجود. |
/pw password |
تعين كلمة المرور التي سيتم استخدامها عند التسجيل إلى كمبيوتر محدد بواسطة الخيار /m . |
/u user name |
تعين إسم المستخدم الذي سيتم استخدامه عند التسجيل إلى كمبيوتر محدد بواسطة الخيار /m . |
/? |
يقوم بعرض بناء جملة الأمر والخيارات للأداة. |
ملاحظات
يستخدم Mgmtclassgen.exe أسلوب ManagementClass.GetStronglyTypedClassCode. لذلك يمكنك استخدام أي موفر تعليمات برمجية مخصصة لانشاء تعليمات برمجية في لغات مدارة غير C# Visual Basic و JScript.
لاحظ أن االفئات المنشأة مضمنة إلى المخطط الذي من أجله تم انشاؤهم. إذا تم تغيير المخطط الأساسي , يجب عليك إنشاء الفئة إذا كنت تريد أن تعكس التغييرات في المخطط.
يوضح الجدول التالي كيفية تعيين أنواع WMI طراز المعلومات الشائعة (CIM) إلى أنواع بيانات في الفئة التي تم إنشاؤها:
نوع CIM |
نوع البيانات في الفئة التي تم إنشاؤها. |
---|---|
CIM_SINT8 |
SByte |
CIM_UINT8 |
Byte (بايت) |
CIM_SINT16 |
Int16 |
CIM_UINT16 |
UInt16 |
CIM_SINT32 |
Int32 |
SIM_UINT32 |
UInt32 |
CIM_SINT64 |
Int64 |
CIM_UINT64 |
UInt64 |
CIM_REAL32 |
مفرد |
CIM_REAL64 |
مزدوج |
CIM_BOOLEAN |
قيمة منطقية |
سلسلة CIM |
سلسة نصية |
CIM_DATETIME |
DateTime أو TimeSpan |
CIM_REFERENCE |
مسار الإدارة |
CIM_CHAR16 |
حرف |
CIM_OBJECT |
كائن ManagementBase |
CIM_IUNKNOWN |
الكائن |
CIM_ARRAY |
مصفوفة من الكائنات المذكورة أعلاه |
لاحظ السلوكيات التالية عند إنشاء فئة WMI:
إنه من الممكن لأسلوب أو خاصية قياسية عامة أن يكون لهم نفس إسم أسلوب أو خاصية موجودة أصلاً. في حالة حدوث ذلك، الأداة تغير اسم الخاصية أو الأسلوب في الفئة التي تم إنشاؤها لتجنب تعارضات التسمية.
من الممكن لاسم خاصية أو أسلوب في الفئة المنشأ أن يكون كلمة أساسية في لغة برمجة الهدف. في حالة حدوث ذلك، الأداة تغير اسم الخاصية أو الأسلوب في الفئة التي تم إنشاؤها لتجنب تعارضات التسمية.
في WMI, المؤهلات هي المعدّلات التي تحتوي على معلومات لتصف فئة , مثيل ، خاصية أو أسلوب. WMI تستخدم المؤهلات القياسية مثل Read, Write و اKey لوصف خاصية في الفئة التي تم إنشاؤها. على سبيل المثال، الخاصية التي تم تعديلها مع المؤهل Read تعرف فقط مع أسلوب استرجاع الخاصية get في الفئة التي تم إنشاؤها. بسبب تعليم الخاصية مع مؤهل Read بهدف ان تكون للقراءة فقط , لا يتم تعريف أسلوب إسترجاع set.
يمكن تعديل الخاصية الرقمية بالمؤهلات Values و ValueMaps للإشارة أن يمكن تعيين الخاصية فقط بواسطة القيم المسموح بها. يتم إنشاء قائمة تعداد مع Values و ValueMaps و يتم تعيين الخاصية إلى التعداد.
يستخدم WMI مصطلح singleton ليصف فئة تحتوي فقط على مثيل واحد. لذلك الدالة الإنشائية الافتراضية لفئة singleton سيهيء الفئة إلى مثيلها الوحيد.
يمكن أن تحتوي فئة WMI على خصائص التي هي عبارة عن كائنات. عندما تقوم بإنشاء فئة مكتوبة بشدة لهذا النوع من فئة WMI , يجب عليك الأخذ في الاعتبار إنشاء فئات مكتوبة بشدة لأنواع خصائص كائن مضمنة. سيسمح لك ذلك بالوصول إلى الكائنات المضمنة بأسلوب مكتوب بشدة. لاحظ أن التعليمات البرمجية المنشأة قد لا تتمكن من الكشف عن نوع الكائن المضمن. في هذه الحالة، سيتم إنشاء تعليق في التعليمات البرمجية المنشأة لإعلامك عن هذه المشكلة. يمكنك بعد ذلك تعديل التعليمات البرمجية المنشأة لكي تقوم بكتابة الخاصية إلى الفئة الأخرى التي تم إنشاؤها.
في WMI, قيمة بيانات نوع بيانات CIM_DATETIME يمكن أن يمثل إما تاريخ محدد و وقت أو فاصل زمني. إذا كانت قيمة البيانات تمثل التاريخ والوقت, نوع البيانات في الفئة التي تم إنشاؤها هي DateTime. إذا كانت قيمة البيانات تمثل فاصل زمني ، نوع البيانات في الفئة المنشأة هي TimeSpan.
يمكنك كبديل إنشاء فئة مكتوبة بشدة باستخدام "ملحق إدارة مستعرض الخادم" في Visual Studio .NET.
لمزيد من المعلومات حول WMI، راجع موضوع أدوات إدارة Windows موضوع في وثائق النظام الأساسي SDK.
أمثلة
يقوم الأمر التالي بإنشاء فئة مدارة في تعليمات برمجية #C لفئة WMIWin32_LogicalDisk في مساحة الإسم Root\cimv2. الأداة تكتب الفئة المدارة إلى ملف المصدر على c:\disk.cs في مساحة الإسم ROOT.CIMV2.Win32.
mgmtclassgen Win32_LogicalDisk /n root\cimv2 /l CS /p c:\disk.cs
مثال التعليمة البرمجية التالي يوضح كيفية استخدم فئة منشأة بطريقة برمجية. أولاً,يتم تعداد مثيل الفئة و طباعة المسار. ثانياً ،يتم إنشاء مثيل الفئة التي تم انشاؤها لتكون مهيئة مع مثيل WMI. Process هي الفئة المنشأة لـ Win32_Process LogicalDisk هي الفئة المنشأة لـ Win32_LogicalDisk في مساحة الإسمRoot\cimv2.
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);
}
}
راجع أيضًا:
المرجع
ManagementClass.GetStronglyTypedClassCode
System.CodeDom.Compiler.CodeDomProvider