none
Windows Update AgentのIUpdateSearcher のSearchメソッドが終わらない RRS feed

  • 質問

  • 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)

    2018年1月22日 1:32

すべての返信

  • Win7,8.1,10で試しましたが成功しましたよ。

    たんに検索に時間がかかっているだけだと思います。
    コントロールパネルで更新の確認を実行して、結果が返ってくるのと同等の時間がかかると思っていいです。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2018年1月22日 3:56