【问题标题】:Get all updates from a Windows computer with programming通过编程从 Windows 计算机获取所有更新
【发布时间】:2018-04-06 11:32:03
【问题描述】:

我正在寻找一种从工作站或服务器 (Microsoft Windows) 获取所有更新的方法。

当我查看控制面板 → 程序 → 程序和功能 → 已安装的更新时,我还可以看到 Visual Studio 和其他产品的更新。

例子:

Visual Studio 2015 更新 3 (KB3022398) Microsoft Visual Studio 2015 更新 (KB3165756)

但我尝试过的所有编程方式都无法让我获得 Visual Studio 的更新。我怎样才能做到这一点?

我试过了:

$Session = New-Object -ComObject Microsoft.Update.Session
$Searcher = $Session.CreateUpdateSearcher()
$HistoryCount = $Searcher.GetTotalHistoryCount()
$Updates = $Searcher.QueryHistory(0,$HistoryCount)
$Updates | Select Title, @{l='Name';e={$($_.Categories).Name}}, Date | ft
Get-HotFix
Get-WmiObject -Class "Win32_QuickfixEngineering"

任何有关如何以编程方式获取所有更新的帮助将不胜感激。

【问题讨论】:

  • 似乎与 C# 无关?还是 C# 解决方案也可以,而不仅仅是 powershell 一个?
  • 任何 .NET (C#)、Powershell、WMI 或 CMD 线路方式都适合我 :)
  • 微软已经有一个名为 WSUS 的更新管理工具,它甚至可以进行报告。
  • 嗨,Bill,我知道 WSUS,但我正在寻找一些可以在几乎任何 Windows 操作系统上运行的简单代码,无论它是否在 WSUS 下。

标签: c# powershell wmi


【解决方案1】:

如果您使用的是 C#,则可以使用 WUApiLib 来做到这一点

Type t = Type.GetTypeFromProgID("Microsoft.Update.Session", 
UpdateSession UpdateSession = (UpdateSession)Activator.CreateInstance(
IUpdateSearcher UpdateSearchResult = UpdateSession.CreateUpdateSearcher();
UpdateSearchResult.Online = true;
ISearchResult SearchResults = UpdateSearchResult.Search("IsInstalled=1 AND IsPresent=1");

第二个选项是从下面提到的注册表项中读取信息

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多