2011-05-12 91 views

回答

9

前一段时间,我在博客这个话题search for installed windows updates using Delphi, WMI and WUA

的关键是使用Windows Update Agent API

检查此示例代码。

//use in this way ISHotFixID_Installed('KB982799') 
function ISHotFixID_Installed(const HotFixID : string): Boolean; 
var 
    updateSession  : OleVariant; 
    updateSearcher  : OleVariant; 
    updateEntry  : OleVariant; 
    updateSearchResult : OleVariant; 
    UpdateCollection : OleVariant; 
    oEnum    : IEnumvariant; 
    iValue    : LongWord; 
begin 
result:=False; 
    updateSession:= CreateOleObject('Microsoft.Update.Session'); 
    updateSearcher := updateSession.CreateUpdateSearcher; 
    //this line improves the performance , the online porperty indicates whether the UpdateSearcher goes online to search for updates. so how we are looking for already installed updates we can set this value to false 
    updateSearcher.online:=False; 
    updateSearchResult:= updateSearcher.Search(Format('IsInstalled = 1 and Type=%s',[QuotedStr('Software')])); 
    UpdateCollection := updateSearchResult.Updates; 
    oEnum   := IUnknown(UpdateCollection._NewEnum) as IEnumVariant; 
    while oEnum.Next(1, updateEntry, iValue) = 0 do 
    begin 
    Result:=Pos(HotFixID,updateEntry.Title)>0; 
    updateEntry:=Unassigned; 
    if Result then break; 
    end; 

end; 
相关问题