检查上次执行 Windows 更新的时间

7

我该如何在代码(c#/.Net)中检查上次检查Windows更新的时间?

不是检查有哪些更新已安装或未安装,而是检查上次检查的时间?

最好的情况是可以完整地了解Windows更新检查的历史记录,但是只知道上次检查的时间也足够了。


Windows 的哪个版本(不确定是否有关系,但可能会有帮助)? - DaveShaw
几乎是普遍/现代的。我猜像Win2003服务器/Vista和以后-32位和64位这样的东西。 - Kjensen
3个回答

12

请看这个注册表键:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results

它有三个子键,每个子键提供不同的信息,涉及不同的事件:

  • Detect:检测更新
  • Download:下载更新
  • Install:安装更新

每个键都有一个 LastSuccessTime 值可供使用。


10
在Windows 10的“自动更新”中,我没有“结果”键。 - IronManMark20
我不确定那个信息是否正确,我在我的系统上检查了一下,在“安装”子键中找到的值之后,我已经安装了更新。我使用的是Windows 7。所以至少对我来说是不可靠的。 - mjsr

10
在Windows 7、8、10上,你可以使用以下代码:
var auc = new AutomaticUpdatesClass();

DateTime? lastInstallationSuccessDateUtc = null;
if (auc.Results.LastInstallationSuccessDate is DateTime)
    lastInstallationSuccessDateUtc = new DateTime(((DateTime)auc.Results.LastInstallationSuccessDate).Ticks, DateTimeKind.Utc);

 DateTime? lastSearchSuccessDateUtc = null;
 if (auc.Results.LastSearchSuccessDate is DateTime)
     lastSearchSuccessDateUtc = new DateTime(((DateTime)auc.Results.LastSearchSuccessDate).Ticks, DateTimeKind.Utc);
  • 引用"C:\Windows\System32\wuapi.dll"。
  • 检查引用中的EmbeddedInteropTypes是否设置为False。

有人知道是否有办法将此方法用于远程机器吗? - Vladimir
我该如何获取AutomaticUpdatesClass()? - Matt

-7
在Windows 7中,前往控制面板、系统和安全、Windows更新。有一个选项可以查看所有更新的历史记录,其中包括每个更新的日期和时间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接