2012-10-08 48 views
2

我是C++中的新手,目前正致力於在C++ DLL中獲取Windows Hotfix/Patch信息。Windows API相當於「WMIC QFE Get」

我已經評估以下幾種方式:

  1. 通過在C++代碼執行子流程和運行wmic qfe get和讀取所有數據。
  2. 通過使用C++ API初始化COM,連接到Wbem並執行select * from win32_quickfixengineering查詢。
從上面的兩種方法

除此之外,

有直接的Windows API做所有的工作對我來說並給出當前機器上安裝的KB信息的列表?

+1

當前安裝在機器上的KB列表無用。例如,如果您想知道是否安裝了Q1234的修復程序,則即使KB1234不在已安裝的KB列表中,答案也可能爲「是」。修復可能是在一個彙總或服務包。正確答案不是查詢QFE列表並查找1234,而是詢問WU是否需要QFE 1234。 –

+0

感謝陳的快速回復。我完全需要知道qfe得到的KB列表。我知道一些KBs部分服務包的情況,我們可以從OS Information獲得這些信息。如果編寫的任何類似qfe的API都可以直接使用,而不是從頭開始編寫代碼。 – TechyHarry

+0

你還沒有解釋你將要使用這些信息,所以目前還不清楚這是否是正確的方法。無論如何,你總是可以[直接編程到WMI](http://msdn.microsoft.com/en-us/library/windows/desktop/aa390418)。這就是WMIC所做的。 –

回答

3

您可以使用Windows Update Agent APIIUpdateSearcher接口。

+0

嗨RRUZ,謝謝你的回覆。我查看了IUpdateSearcher接口,它類似於執行來自win32_quickfixengineering的select *並遍歷結果。即使執行查詢和IUpdateSearcher都是通過COM完成的。您能否介紹執行查詢和使用IUpdateSearcher之間的區別?哪個更好實施,速度更快,適用於所有Windows平臺? – TechyHarry

+0

@HareeshSarma,前段時間我寫了一篇[文章](https://theroadtodelphi.wordpress.com/2011/03/02/search-for-installed-windows-updates-using-delphi-wmi-and-wua/)關於這個主題可以幫助你理解它是如何工作的,代碼是在Delphi中,但可以很容易地轉換爲C++ – RRUZ

+0

太棒了。真棒文章。我會嘗試將其轉換爲C++。還有一些問題。 WUA是否提供所有版本的Windows 32位和64位的所有更新和修補程序信息,以及64位所需的任何特定編碼?這個WUA適用於從2000到2008 R2的所有服務器Windows和客戶端Windows XP到Windows 8? – TechyHarry