【发布时间】:2014-01-13 05:28:33
【问题描述】:
我刚开始 WPF,有点迷茫。
XAML 代码:
<DataGrid Name="dgResults" AutoGenerateColumns="True" ItemsSource="{Binding}">
</DataGrid>
C#代码:
private void GetServices(string strComputer)
{
ManagementScope scope = new ManagementScope(@"\\" + strComputer + @"\root\cimv2");
SelectQuery query = new SelectQuery("Select * From Win32_Service");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection services = searcher.Get();
dgResults.ItemsSource = services;
}
我期待 WMI Win32_Service 查询将 WMI 属性显示为标题,并且返回集合中的每个对象将显示为一行。但它显示了 ManagementObjectCollection 属性。有没有办法转换它并仍然允许访问所有属性?
任何帮助将不胜感激。
【问题讨论】:
-
此代码显示
ManagementObject属性。这里的“属性”是指 CLR 属性,而不是 WMI 属性 (msdn.microsoft.com/en-us/library/…)。此外,创建 WMI 对象并忘记它们是一个坏主意 -ManagementObjectSearcher、ManagementObjectCollection和每个将通过集合枚举的ManagementBaseObject都是IDisposable并且必须被处置。 -
很好,丹尼斯。我还不习惯 c#。我通常在 vbs、批处理中编写我的应用程序脚本。我要么采用编译器调用 dispose 的 using 语句,要么在 try 或 finally 块中手动调用 dispose 方法。