4

以前、Windowsシステムにインストールされている修正プログラムのリストを照会する方法について説明し、情報を提供するものとしてWMIとクラスの使用をWin32_QuickFixEngineering提案しました。ただし、 MSDNは、Vista以降、この特定のクラスは修正プログラムのみを返し、他の方法でインストールされた更新プログラムは返さないことを示しています。

以前の質問では、このクラスを使用してインストールされた更新を取得する方法について説明しています。これは、上記の制限のために、作成者もこのクラスの使用に満足していないことを示しています。残念ながら、受け入れられた回答に対するコメントが指摘しているように、Windows UpdateエージェントAPIを使用する代替ソリューションは、修正プログラムが後で削除された後でもインストールされていることを示します(現在インストールされている更新プログラムではなく、インストール履歴を照会します) 。

システムにインストールされている更新プログラムと修正プログラムの完全なリストを(WMIまたはその他のAPIを介して)C#に取り込む方法を知っている人はいますか?これは、更新プログラムをインストールする手段を除外せず、以前の更新プログラムを返しません。その後削除されましたか?基本的に、[インストールされた更新の表示]ペインの[プログラムと機能]で利用できるものと同じデータセットを探しています。

以前にこの問題を検討していたリンクされた質問のいずれかでこの議論が行われるべきだった場合はお詫びしますが、私の現在の評判では、どちらかの質問に貢献できる唯一の方法は新しい回答を提出することであり、それは間違いなく正しい方法ではありませんこのようなさらなる質問をするために。

ありがとう!

4

2 に答える 2

0

インストールされ、アンインストールできるものはすべて、のレジストリに登録する必要があります。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall サブキー名KB999999は、システムアップデート(修正プログラムまたはサービスパック)用に予約されているようです。更新であるものは、更新したレジストリエントリにリンクするParentKeyNameという名前のサブキー内にREG_SZ値を持ちます。

たとえば、SQLServer2008用のServicePack1を使用しているためHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB968369、レジストリにサブキーがあります。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB968369\ParentKeyNameこれには、 「Microsoft SQLServer10リリース」という値で名前が付けられたREG_SZ値があります。SQL Server 2008がインストールされているため(KB968369がそのSPであるため)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft SQL Server 10 Release、ParentKeyNameリンクもあります。

ReleaseType REG_SZ値から、更新のタイプを確認できます。たとえば、KB968369のインストールのHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB968369\ReleaseType値は「ServicePack」です。

アンインストールできるアップデートのみがUninstallキーの下に登録されていると思います。さまざまなシステムアップデートの詳細を示しているように見えるHKEY_LOCAL_MACHINE\Software\Classes\Installer\Patchesレジストリキー(ここのようなさまざまな場所で参照されています:http ://support.microsoft.com/kb/971187)もあります。

インスタンス化してクエリできるMicrosoftUpdateオブジェクトもあるようです。この例の詳細は次のとおりです:http://msmvps.com/blogs/athif/archive/2005/11/20/76035.aspx

それがあなたが望むものを完全にあなたに与えるかどうかはわかりません。しかし、それは私が何年にもわたって学んだいくつかの様々なことです...

于 2012-09-10T19:16:07.500 に答える
0

これを達成するための信頼できる完全なプログラムによる方法がないため、私はwmic qfeコマンドを使用することになりました。

于 2013-02-19T11:26:33.133 に答える