3

我很好奇是否有一个 .Net API 可以让我确定哪些更新正在等待“Windows Update”

如果做不到这一点,是否有可以获取它的 windows powershell 命令?

4

3 回答 3

4

这是一个 VBScript,您可以使用它来安装更新

http://msdn.microsoft.com/en-us/library/aa387102(VS.85).aspx

您可以在 PowerShell 中非常轻松地使用 COM 对象。鉴于上述 VBScript 示例,您也可以在 PS 中使用该对象

PS C:\> $updateSession = new-object -com Microsoft.update.Session
PS C:\> $updateSession | get-member


   TypeName: System.__ComObject#{918efd1e-b5d8-4c90-8540-aeb9bdc56f9d}

Name                       MemberType Definition
----                       ---------- ----------
CreateUpdateDownloader     Method     IUpdateDownloader CreateUpdateDownloader ()
CreateUpdateInstaller      Method     IUpdateInstaller CreateUpdateInstaller ()
CreateUpdateSearcher       Method     IUpdateSearcher CreateUpdateSearcher ()
CreateUpdateServiceManager Method     IUpdateServiceManager2 CreateUpdateServiceManager ()
QueryHistory               Method     IUpdateHistoryEntryCollection QueryHistory (string, int, int)
ClientApplicationID        Property   string ClientApplicationID () {get} {set}
ReadOnly                   Property   bool ReadOnly () {get}
UserLocale                 Property   uint UserLocale () {get} {set}
WebProxy                   Property   IWebProxy WebProxy () {get} {set}


PS C:\> $searcher = $updateSession.CreateUpdateSearcher()
PS C:\> $searcher | gm


   TypeName: System.__ComObject#{04c6895d-eaf2-4034-97f3-311de9be413a}

Name                                MemberType Definition
----                                ---------- ----------
BeginSearch                         Method     ISearchJob BeginSearch (string, IUnknown, Variant)
EndSearch                           Method     ISearchResult EndSearch (ISearchJob)
EscapeString                        Method     string EscapeString (string)
GetTotalHistoryCount                Method     int GetTotalHistoryCount ()
QueryHistory                        Method     IUpdateHistoryEntryCollection QueryHistory (int, int)
Search                              Method     ISearchResult Search (string)
CanAutomaticallyUpgradeService      Property   bool CanAutomaticallyUpgradeService () {get} {set}
ClientApplicationID                 Property   string ClientApplicationID () {get} {set}
IgnoreDownloadPriority              Property   bool IgnoreDownloadPriority () {get} {set}
IncludePotentiallySupersededUpdates Property   bool IncludePotentiallySupersededUpdates () {get} {set}
Online                              Property   bool Online () {get} {set}
SearchScope                         Property   SearchScope SearchScope () {get} {set}
ServerSelection                     Property   ServerSelection ServerSelection () {get} {set}
ServiceID                           Property   string ServiceID () {get} {set}


PS C:\>

您可以继续使用 get-member 来找出所有不同的选项,并基本上将该 VBScript 转换为 PowerShell 并对其进行调整以执行您需要执行的任何操作。

安迪

于 2008-12-12T02:36:02.523 回答
3

Windows 更新代理 API 可能是您正在寻找的:

http://msdn.microsoft.com/en-us/library/aa387287%28VS.85%29.aspx

它是一个 COM 接口(不是 .NET 本机接口),但您可以从应用程序中使用它。

于 2008-12-10T16:40:44.957 回答
0

这一点都不是那么简单,但您只需引用 COM/WUAPI 2.0 类型库,VS 就会为您创建一个托管包装器,并将其作为 WuApiLib.dll 复制到构建目录。

小心内存泄漏。

于 2008-12-10T16:50:04.580 回答