【问题标题】:Check when last check for Windows Updates was performed检查上次检查 Windows 更新的时间
【发布时间】:2012-03-02 04:29:30
【问题描述】:

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

不是安装或未安装哪些更新,而是上次检查是何时执行的?

最好的办法是记录何时执行 Windows 更新检查的完整历史记录,但我当然可以只知道最后一次检查。

【问题讨论】:

  • 什么版本的 Windows(不确定是否重要,但可能有帮助)?
  • 非常普遍/现代。我猜想像 Win2003 服务器/Vista 和转发 - 32 位和 64 位。

标签: c# .net windows-update


【解决方案1】:

查看这个注册表项:

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

它有 3 个子键,每个子键提供有关不同事件的不同信息

  • 检测
  • 下载
  • 安装

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

【讨论】:

  • 我在 Windows 10 上的 AutoUpdate 中没有 Results 键。
  • 我不确定该信息是否正确,我检查了我的系统,并在我在“安装”子项中找到的值之后安装了更新。我有 Windows 7。所以至少对我来说是不可靠的。
【解决方案2】:

在 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 on reference 是否设置为 False。

【讨论】:

  • 有谁知道是否有办法在远程机器上使用这种方法?
  • 如何获得 AutomaticUpdatesClass() ?
【解决方案3】:

在 Windows 7 中,转到控制面板、系统和安全、Windows 更新。有一个选项可以查看所有更新的历史记录,其中给出了每个更新的时间和日期。

【讨论】:

    猜你喜欢
    • 2012-05-19
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多