.Net Windows Update - PullRequest
       13

.Net Windows Update

3 голосов
/ 10 декабря 2008

Мне было любопытно, если бы был .Net API, который позволил бы мне определить, какие обновления ожидают обновления Windows Update

в случае неудачи, есть команда windows powershell, которая может его получить?

Ответы [ 3 ]

3 голосов
/ 12 декабря 2008

Вот VBScript, который вы можете использовать для установки обновлений с

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

Вы можете очень легко использовать COM-объект в PowerShell. Учитывая приведенный выше пример 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 и настроить его так, чтобы он делал все, что вам нужно.

Andy

3 голосов
/ 10 декабря 2008

API агента обновления Windows может быть тем, что вы ищете:

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

Это интерфейс COM (не собственный .NET), но вы можете использовать его из своего приложения.

0 голосов
/ 10 декабря 2008

Это совсем не тривиально, но вы можете просто сослаться на библиотеку типов COM / WUAPI 2.0, и VS создаст для вас управляемую оболочку, которая будет скопирована в каталог сборки как WuApiLib.dll.

Будьте осторожны с утечками памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...