web-dev-qa-db-ja.com

C#を使用してWindows Updateと対話します

Windows UpdateとインターフェースできるC#プログラムを書くためのAPIがあり、それを使用して特定のアップデートを選択的にインストールすることができますか?

私は承認されたアップデートの中央リポジトリにリストを格納する行に沿ってどこかに考えています。その後、クライアント側のアプリケーション(一度インストールする必要があるであろう)は、Windows Updateとインタフェースして、利用可能な更新プログラムを決定し、承認されたリストにあるものをインストールします。そのように、更新はクライアント側のパースペクティブから自動的に適用されますが、どの更新が適用されているかを選択できます。

これは会社での私の役割ではありませんが、Windowsの更新のためのAPIがあるかどうか、そしてそれを使う方法があるかどうか疑問に思っていました。

15
DevinB

C#プロジェクトにwuapilibへの参照を追加します。

using WUApiLib;
protected override void OnLoad(EventArgs e){
    base.OnLoad(e);
    UpdateSession uSession = new UpdateSession();
    IUpdateSearcher uSearcher = uSession.CreateUpdateSearcher();
    uSearcher.Online = false;
    try {
        ISearchResult sResult = uSearcher.Search("IsInstalled=1 And IsHidden=0");
        textBox1.Text = "Found " + sResult.Updates.Count + " updates" + Environment.NewLine;
        foreach (IUpdate update in sResult.Updates) {
                textBox1.AppendText(update.Title + Environment.NewLine);
        }
    }
    catch (Exception ex) {
        Console.WriteLine("Something went wrong: " + ex.Message);
    }
}
 _

テキストボックスを持つフォームがあると考えると、これは現在インストールされているアップデートのリストを表示します。参照 http://msdn.microsoft.com/en-us/library/aa387102(vs.85).aspx より多くのドキュメントについて。

ただし、Windows Updateで配布されていないKB修正プログラムを見つけることはできません。

あなたが望むものをする最も簡単な方法は [〜#〜] wsus [〜#〜] を使用しています。それは無料で、基本的にあなたがあなたのコンピュータのどの更新プログラムが「承認」されているかを決定するあなた自身のローカルのWindows Updateサーバーを設定することができます。 WSUSサーバーもクライアントもドメインに参加する必要はありませんが、クライアントの設定が簡単になります。さまざまな更新プログラムセットが必要なさまざまなマシンセットがある場合は、これもサポートされています。

これだけが記載されている目標を達成するだけでなく、WSUSサーバーからアップデートを一度ダウンロードするだけで、ネットワーク帯域幅を全体的に保存します。

4
Ryan Bolger