在 Windows 上,我可以检查是否执行了系统还原吗?

在 Windows 上,我可以检查是否执行了系统还原吗?

我最近发现,Windows 系统还原会监控大量文件扩展名,执行系统还原时,所有文件扩展名都会被恢复或删除。这些扩展名在许多情况下与其他程序相关联,恢复可能会导致不一致或数据丢失。

就我而言,我意识到了这种行为是因为 MySql 用于存储表数据的一些 *.idb 文件在恢复过程中被删除了。

快速搜索我发现扩展列表无法以任何方式编辑,并且使用注册表项排除文件FilesNotToSnapshot不是一个可行的解决方案,因为在这种情况下它们将被彻底删除,就像从未存在过一样

然而,有一些程序可用于恢复上一个版本并还原它,但要做到这一点,我应该知道已经执行了系统恢复。

我可以检查是否执行了系统还原吗,是否存在注册表变量或我可以使用自定义程序监控的东西?

答案1

这可能不是最好的解决方案,但它满足我的需要。

在 Windows 应用程序事件日志中,有一些与系统还原点相关的事件,ID 8202 与从还原点成功执行的还原相关。

我编写了一个小程序,并将其设置为在启动时运行,以读取事件日志并检查事件 8202。它将上一个 8202 事件的日期与之前存储的本地 txt 文件的日期进行比较。如果日期不同,程序窗口保持打开状态,否则关闭。每次手动关闭窗口时,存储的日期都会更新。

读取事件日志的相关代码如下

//init log reader
string eventLogName = "Application";

eventLog = new EventLog();
eventLog.Log = eventLogName;

// read events and store relevant ones in a local variable
List<EventLogEntry> entries = new List<EventLogEntry>();

foreach (EventLogEntry log in eventLog.Entries)
{
       if (log.EventID != 8202)
       {
           continue;
       }
       entries.Add(log);
}

然后我检查entries变量的内容。

我仅针对手动启动的还原点进行了测试,它已完成了其工作。

请注意,如果程序存储在受监控的磁盘中,则在添加后应手动创建还原点,否则第一次还原将删除它,因为“exe”是受监控的扩展名。

相关内容