Така че успях да напиша клас, който ми позволява да имам достъп до WMI и да получа информация за класовете, включително техните методи, както и всички свойства на класовете и техните последващи методи. Не мога да намеря нищо в C# под класовете System.Management или System.Management.Instrumentation, което ми позволява достъп до CIM типовете данни на свойствата в WMI, или в основния клас, или в методи. Някой знае ли за начин, по който мога да получа тези типове данни?
Вземете CIM тип данни от свойства в WMI класове с C#
comment
CIM_DataFile Class WMI
- person MethodMan   schedule 25.11.2014
comment
Изглежда, че нищо там не ми позволява да получа типовете данни на свойствата в WMI класове. Освен това CIM_DataFile не изглежда да стои на върха на йерархията за класовете, които разглеждам. Все още не съм експерт с WMI/CIM/WBEM, но съм почти сигурен, че това не е това, което търся.
- person Christopher D Albert   schedule 25.11.2014
Отговори (1)
За да получите метаданните (като cimtype, стойност, име) на WMI класовете, можете да използвате PropertyData
клас.
Опитайте този примерен код от 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
Благодаря, това проработи. Мислех, че това е свойството Properties на обекта ManagementClass, но ми беше трудно да използвам данните, съдържащи се в него. Все още нов в пространството на имената System.Management. Благодаря отново! Редактиране:
- person Christopher D Albert; 28.11.2014