Получить тип данных CIM из свойств в классах WMI с помощью C #

Итак, мне удалось написать класс, который позволяет мне обращаться к WMI и получать информацию о классах, включая их методы, и все свойства классов и их последующих методов. Я не могу найти в C # в классах System.Management или System.Management.Instrumentation ничего, что позволяет мне получить доступ к типам данных CIM свойств в WMI ни в основном классе, ни в методах. Кто-нибудь знает, как я могу получить эти типы данных?


person Christopher D Albert    schedule 25.11.2014    source источник
comment
WMI класса CIM_DataFile   -  person MethodMan    schedule 25.11.2014
comment
Кажется, там ничего не позволяет мне получить типы данных свойств в классах WMI. Кроме того, CIM_DataFile, похоже, не находится на вершине иерархии классов, которые я изучаю. Я еще не эксперт в WMI / CIM / WBEM, но уверен, что это не то, что мне нужно.   -  person Christopher D Albert    schedule 25.11.2014


Ответы (1)


Чтобы получить метаданные (например, cimtype, значение, имя) классов WMI, вы можете использовать _ 1_ класс.

Попробуйте этот образец кода из MSDN

using System;
using System.Management;

public class Sample 
{    
    public static void Main() 
    {

        // Get the WMI class
        ManagementClass osClass = 
            new ManagementClass("Win32_OperatingSystem");

        osClass.Options.UseAmendedQualifiers = true;

        // Get the Properties in the class
        PropertyDataCollection properties =
            osClass.Properties;

        // display the Property names
        Console.WriteLine("Property Name: ");
        foreach (PropertyData property in properties)
        {
            Console.WriteLine(
                "---------------------------------------");
            Console.WriteLine(property.Name);
            Console.WriteLine("Description: " + property.Qualifiers["Description"].Value);
            Console.WriteLine();

            Console.WriteLine("Type: ");               
            Console.WriteLine(property.Type);

            Console.WriteLine();

            Console.WriteLine("Qualifiers: ");
            foreach(QualifierData q in 
                property.Qualifiers)
            {
                Console.WriteLine(q.Name);
            }
            Console.WriteLine();

            foreach (ManagementObject c in osClass.GetInstances())
            {
                Console.WriteLine("Value: ");
                Console.WriteLine(c.Properties[property.Name.ToString()].Value);
                Console.WriteLine();
            }
        }    
    }
person RRUZ    schedule 27.11.2014
comment
Спасибо, это сработало. Я думал, что это свойство Properties объекта ManagementClass, но мне было трудно использовать данные, содержащиеся внутри. Все еще новичок в пространстве имен System.Management. Еще раз спасибо! Редактировать: - person Christopher D Albert; 28.11.2014