来自HRESULT的异常:0x80240007

时间:2012-11-08 09:55:23

标签: c# wpf

当我尝试获取已安装的Windows更新时,我收到错误“来自HRESULT的异常:0x80240007”。我的代码在Windows 7中运行良好,但它在Windows XP中无法正常工作。我在行中出现错误“var history = updateSearcher .QueryHistory(0,count);“

这是我的代码片段

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

我在最后一行收到错误。我需要在代码中做出哪些更改。请帮助我解决这个问题。

斯瓦特

1 个答案:

答案 0 :(得分:6)

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;

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