using WUApiLib;
namespace WUAUpdateCheck
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void ExecuteButton_Click(object sender, EventArgs e)
{
this.ResultTextBox.Text = "";
// アップデートセッション 作成
UpdateSession session = new UpdateSession();
// アップデート検索インスタンス作成
IUpdateSearcher searcher = session.CreateUpdateSearcher();
// 「インストールされているもの」「ソフトウェア」「再起動が必要ない」で検索し、結果を取得
//ISearchResult result = searcher.Search("IsInstalled=1 and Type='Software' and RebootRequired=0");
// 検索し、結果を取得
ISearchResult result = searcher.Search("");
StringBuilder builder = new StringBuilder();
// アップデート一覧からタイトル一覧を取得する。
foreach (IUpdate u in result.Updates)
{
builder.AppendLine("[" + u.Title + "]");
}
builder.AppendLine();
// 取得した KB 一覧をセット
this.ResultTextBox.Text = builder.ToString();
}
}
}
C#からWindows Update Agentを使ってWindows Updateの状況を取得しようとしていますが、
IUpdateSearcherインターフェイスのSearchメソッドの実行で止まってしまい、フリーズしてしまいます。
どのようにしたらこのメソッドを通常に動かせるようになるでしょうか。
なお、参照設定で「WUAPI 2.0 Type Library」(WUApiLib)の追加は設定済みです。
参考:
WUA を使用して Windows の更新プログラムのインストール状況を調べる - Windows- ソーサリーフォース
IUpdateSearcher::Search method (Windows)