当我需要在实现之前测试WMI代码时,我会使用WMI Code Creator。它有点老了,但似乎运行得很好。
我正在尝试获取PC上的还原点列表,以便向用户显示此信息。当我在Windows10上运行代码创建器生成的代码时,即使我有5个设置,我也得到了0个还原点。当我在Windows7上运行它时,它显示了所有的还原点。
你知道为什么这在Windows10上不起作用吗?
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\DEFAULT",
"SELECT * FROM SystemRestore");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("SystemRestore instance");
Console.WriteLine("-----------------------------------");
Console.WriteLine("SequenceNumber: {0}", queryObj["SequenceNumber"]);
}
}
catch (ManagementException e)
{
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}发布于 2016-03-24 06:59:19
我知道这篇文章已经发布了几个月了,但希望这篇文章仍然能帮助到一些人。
您可以使用ManagementObjects枚举Windows (包括Win 10)中的还原点,而不是尝试自己运行查询:
ManagementScope ManScope = new ManagementScope(@"\\localhost\root\default");
ManagementPath ManPath = new ManagementPath("SystemRestore");
ObjectGetOptions ManOptions = new ObjectGetOptions();
ManagementClass ManClass = new ManagementClass(ManScope, ManPath, ManOptions);
foreach (ManagementObject mo in ManClass.GetInstances())
{
// do whatever you want here
}每个ManagementObject代表SystemRestore的一个实例,因此您现在可以轻松地检索它的五个属性中的任何一个,如下所示:
var description = mo["Description"].ToString();以这种方式访问ManagementObjects的属性会返回一个对象,因此仍然需要将值转换为适当的类型。
还要注意,GetInstances()方法返回一个ManagementObjectCollection,它允许您检索枚举数,但不支持索引。因此,如果您需要做的不仅仅是枚举还原点,您可能需要将它们复制到另一个数据结构中。
祝好运!
https://stackoverflow.com/questions/34090948
复制相似问题