アンインストールされたプログラムが WMI オブジェクト「WIN32_InstalledStoreProgram」にまだ表示されますか?

アンインストールされたプログラムが WMI オブジェクト「WIN32_InstalledStoreProgram」にまだ表示されますか?

注: これは StackOverflow の元の投稿からの再投稿です。親切なユーザーからここに誘導されたので、単に再投稿しています。

この厄介な問題のために、私は初めて StackOverflow アカウントを作成しました。私は現在の仕事でいくつかの新しい手順をテストするためにテスト PC VM の脆弱性を解決していましたが、脆弱性の 1 つはプレインストールされたアプリケーション「Paint3D」(具体的にはQID 91774興味のある方のために)。簡単に言うと、脆弱性は単に「アプリのバージョンが古い」というものでした。Paint3D を最新バージョンに更新し、Powershell で確認したところ、脆弱性管理ソフトウェアが Paint3D を古いバージョンとして検出し続けていることに気付きました。脆弱性は、次のように WMI オブジェクト「WIN32_InstalledStoreProgram」を照会することで検出されました。 「脅威検出ロジック」メソッドの抜粋最新バージョンにアップデートした後でもこの脆弱性が依然として発生することがわかったので、設定 > アプリ メニューから Paint3D をアンインストールしました。

Powershell コマンド「Get-WmiObject Win32_InstalledStoreProgram」および「Get-WmiObject Win32_InstalledStoreProgram | Format-List -Property Name, Version」を使用して同じ WMI オブジェクトを手動で照会したところ、アンインストールしたアプリ (Microsoft.MSPaint) のエントリが 2 つあることに気付きました。1 つは更新元の古いバージョンで、もう 1 つは更新後の新しいバージョンです。両方ともアンインストールされ、アンインストールされたことが確認されました。WMI オブジェクトが自動的に更新されないかどうかを確認するために別のアプリ (天気) をアンインストールしましたが、アンインストールして上記の Powershell コマンドを使用して確認したところ、天気アプリがアンインストールされ、WMI オブジェクトのエントリとして削除されたことが確認されましたが、Microsoft.MSPaint の 2 つの異なるバージョンは残りました。問題の原因が「ペイント」の通常バージョンである場合に備えて、通常バージョンもアンインストールしましたが、2 つのエントリが残りました。

さて、難しい部分です。Microsoft Store では、Paint3D をインストールしようとするたびに異なるエラー メッセージが表示されます。これは、MS Store が同じ WMI オブジェクトもクエリし、2 つの「バージョン」の「Paint3D」があることがわかったため、何もインストールできないためだと思います。この小さな問題に途方に暮れています。実装する予定の修正は、この VM を消去して脆弱性の解決手順を続行することだけですが、なぜこのようなことが起きているのか、何がこの問題の原因になっているのかを本当に理解したいと思っています。WMI オブジェクトを手動で編集および更新することに関するドキュメントをいくつか読みましたが、WMI や WMI オブジェクトについて十分な知識がないため、自信を持って効果的に対処できません。Paint3D を更新またはアンインストールするだけの簡単な作業です。このような状況に遭遇するとは思ってもみませんでした。少なくとも何が起こっているのか理解したいと思います。

古い MSPaint バージョンを示す WMI オブジェクトの抜粋 現在の MSPaint バージョンを示す WMI オブジェクトの抜粋。ただし、Paint3D は完全にアンインストールされています。

編集 1、2021 年 9 月 1 日午前 12:20: フォローアップですが、システムから AD ユーザーを削除してクリーンなログインを試みましたが、Paint3D は削除されたままで、Microsoft Store は依然として操作不能です。この問題は、その特定のデスクトップにのみ固有のものです。

答え1

私の問題は HEVCVideoExtension に関するものでしたが、それ以外は同様でした。管理者 PowerShell プロンプトから次のように試しました。

Get-AppxPackage -AllUsers -Name "Microsoft.HEVCVideoExtension" を使用して完全なパッケージ名を取得します。

完全なパッケージ名でMicrosoft.HEVCVideoExtension_1.0.41483.0_x64__8wekyb3d8bbweこれを試してください:

Remove-AppxPackage -AllUsers -Package "Microsoft.HEVCVideoExtension_1.0.41483.0_x64__8wekyb3d8bbwe"

私の場合、古い/期限切れバージョンのインストールが、マシンにインストールされていないユーザー アカウントで実行されたため、これは失敗しました。

そこで、Windows ストアを完全にリセットしました。

WSReset.exe

Get-AppxPackage次に、リセットが機能したことを確認するためにコマンドを再実行しました。機能しました。

次に Windows ストアを起動したとき、初期化に非常に時間がかかりましたが、動作しました。

答え2

Windows ブロートウェアは扱いが難しい場合があります。PowerShell を使用して削除してみてください。

PowerShell を管理者として実行します。

Get-AppxPackage Microsoft.MSPaint | Remove-AppxPackage

答え3

これが私たちにとってうまくいった解決策です。

古い W​​indows ストア アプリに関連する重大度 4 および 5 の脆弱性が多数ありました。セキュリティ スキャンは、Windows ストア アプリケーションの古いバージョンがあると報告しました。また、WMI オブジェクトをスキャンしてそれを検出しました。しかし、マシンには最新のアプリが表示されました。つまり、アプリには 2 つのバージョン (古いバージョンと最新のバージョン) がありました。解決に役立つものはありませんでした (アプリのアンインストール、Windows ストアのリセットなど)。

問題がどのように発生したかは別の話ですが、ここに解決策があります。コメントの 1 つに述べられているように、原因はユーザー プロファイルの破損にありました。

たとえば、次のようなものがあるとします。

  • QID: 91698
  • タイトル: Microsoft Windows コーデック ライブラリのリモート コード実行の脆弱性
  • スキャン結果: Microsoft の脆弱な Microsoft.WebpImageExtension が検出されました バージョン '1.0.22753.0'

手順:

  1. 2 つのパッケージがあることを確認する PowerShell: Get-WmiObject -class Win32_InstalledStoreProgram | Where-Object name -like "*WebpImageExtension*"

  2. 古いパッケージを削除する

PowerShell: Remove-AppxPackage -AllUsers -Package Microsoft.WebpImageExtension_1.0.22753.0_x64__8wekyb3d8bbwe。

これは「魔法の」ステップです。エラー 0x80070002 が発生しますが、後で必要になる「Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\EndOfLife\S-1-12-XXXXXXX with Troubled packaged」というエントリがレジストリに作成されます。

  1. 問題のあるパッケージのレジストリ キー Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\EndOfLife\S-1-12-XXXXXXX を削除します。

  2. 残っているパッケージが 1 つだけであることを確認します。PowerShell: Get-WmiObject -class Win32_InstalledStoreProgram | Where-Object name -like "*WebpImageExtension*" を実行します。

関連情報