首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在Windows 7中可以通过WMI查询系统还原点,而在Windows 10中不能?

为什么在Windows 7中可以通过WMI查询系统还原点,而在Windows 10中不能?
EN

Stack Overflow用户
提问于 2015-12-04 22:47:21
回答 1查看 485关注 0票数 1

当我需要在实现之前测试WMI代码时,我会使用WMI Code Creator。它有点老了,但似乎运行得很好。

我正在尝试获取PC上的还原点列表,以便向用户显示此信息。当我在Windows10上运行代码创建器生成的代码时,即使我有5个设置,我也得到了0个还原点。当我在Windows7上运行它时,它显示了所有的还原点。

你知道为什么这在Windows10上不起作用吗?

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

发布于 2016-03-24 06:59:19

我知道这篇文章已经发布了几个月了,但希望这篇文章仍然能帮助到一些人。

您可以使用ManagementObjects枚举Windows (包括Win 10)中的还原点,而不是尝试自己运行查询:

代码语言:javascript
复制
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的一个实例,因此您现在可以轻松地检索它的五个属性中的任何一个,如下所示:

代码语言:javascript
复制
var description = mo["Description"].ToString();

以这种方式访问ManagementObjects的属性会返回一个对象,因此仍然需要将值转换为适当的类型。

还要注意,GetInstances()方法返回一个ManagementObjectCollection,它允许您检索枚举数,但不支持索引。因此,如果您需要做的不仅仅是枚举还原点,您可能需要将它们复制到另一个数据结构中。

祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34090948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档