当我尝试获取已安装的Windows Update时,出现错误“来自HRESULT的异常:0x80240007”。我的代码在Windows 7中运行良好,但在Windows XP中不起作用。我在“ var history = updateSearcher.QueryHistory( 0,计数);”

这是我的代码片段

        var updateSession = new UpdateSession();
        var updateSearcher = updateSession.CreateUpdateSearcher();
        var count = updateSearcher.GetTotalHistoryCount();
        var history = updateSearcher.QueryHistory(0, count);


我在最后一行出现错误。我需要在代码中进行哪些更改。请帮助我解决此问题。

斯瓦蒂

最佳答案

0x80240007是wuerror.h中定义的错误代码WU_E_INVALIDINDEX:

// MessageId: WU_E_INVALIDINDEX
//
// MessageText:
//
// The index to a collection was invalid.
//
#define WU_E_INVALIDINDEX                _HRESULT_TYPEDEF_(0x80240007L)


UpdateSession.CreateUpdateSearcher.QueryHistory的调用归结为IUpdateSearcher::QueryHistory及其文档说:

备注

如果startIndex参数小于0(零)或Count参数小于或等于0(零),则此方法返回WU_E_INVALIDINDEX。

count最有可能不小于0,但也许==0

你需要类似的东西

var count = updateSearcher.GetTotalHistoryCount();
var history = count > 0 ? updateSearcher.QueryHistory(0, count) : null;


(或更复杂的案件处理...。)

07-24 15:47