Windows Updateのあとに、複数のアプリケーションが起動しなくなってしまったときのトラブルシューティング
Windows Updateが実行された翌日、エラーメッセージが画面いっぱいに表示されてしまい、仕事で使うアプリケーションも起動しなくなってしまってとても困ったお話です。
解決方法として下記URLの内容を実施して、無事に解消されました。
以下、この解消法にたどり着くまでと、実施方法を記載します。
Windows Updateを切り戻すも上手くいかず
2023年8月、ずっと起動しっぱなしのPCが再起動をした様子があり、Windows Updateが実行されたのだな、と理解。
デスクトップにログインすると、おびただしい数のエラーダイアログが表示されてしまいました。
このエラーが発生したexeは、当然ですが起動しません。
昨日まで使えてたので、Windows Updateが原因なのは明白ですよね。
.Net Frameworkの修復、Windows Updateのアンインストールなどで効果があるか?→No
このダイアログの「はい」をクリックすると、Microsoftの.Net Framework4.8.1のダウンロードページに飛びます。
ちなみに、わたしのPCの状態はWindows10、.Net Framework v4.8です。
最新のv4.8.1に更新しても、v4.0を求められているのでおそらく意味はありません。
他の解消法を探します。
「This application requires one of the following versions of the .Net Framework…」で検索をかけると、いろんな解決方法がヒットしました。
1は試しにやってみましたが、効果なしでした。
2のような、セーフブートに近いことも試してみましたが、効果なしでした。
そもそも、Windows Updateがいけないんだから、ということで3のWindows Updateのアンインストールもやってみましたが、なんと、ダメでした。
復元ポイントを使ってシステムを復元してひとまず回避
2023年の8月のこの時点では、わたしの状況としてはどうしようもなくなってしまったので、復元ポイントを使って、OSから1週間前の状態に戻したんです。
念のため、過去1週間で更新して失うと困るファイルは、復元に関係のないドライブにコピーしてから復元しました。
参考までに復元方法の解説記事はこちら↓
復元には丸1日かかりました。これはこれで痛手です😢
ただ、PCは問題なく以前の快活な状態に戻ってくれたので、一旦、問題は解決したかのように、現実から目をそらしました。
このときは根本解決まではできなかったんです。
「Windows Updateの更新を停止する」を繰返して回避したけど
その後は、Windows Updateのスケジュールで、「更新を7日間一時停止」というのを何度かクリックすると、5週間は延期できるんですね。
次回更新時期が近づいたら、もう一度この操作をすると更に延期できます。(一時停止ボタンが押せなくなっていたら、更新の再開をクリックすると一瞬更新が始まり一時停止ボタンがEnableになるので、即、一時停止ボタンをクリッククリックします)
ただ、永遠にWindows Updateを延期するわけにもいかず、この操作を見送っていた矢先、あれ以来初めてWindows Updateが走ったのが2023年11月の本日でした。
2023年11月のWindows Updateで再び.Netのエラーが!
11月16日、8月以来のデジャブで、朝からがっかりです。
もう一度復元なんて嫌です。
なんとか修正しなければ、この先も苦しいだけでどうにもならない。現実に向き合うときがきました。
いくつか検索をかけたところ、前回8月には見つけられなかったトラブルシューティングの下記の記事を発見。
レジストリを操作する方法なので、ちょっと躊躇しましたがやってみるしかありません。
解決編
やってみた結果、見事に解決したので、この方法の上記記事では詳細が書かれていない、実際の手順を書き下してみます。
【解決法詳細】レジストリにKeyを追加して修正する手順
レジストリの編集は非常にリスクがあるので、やったことのない人にはお勧めしません。実施に関しては自己責任でお願いします。
基本は、すでにあるキーや値を変更することや、削除することは絶対にしないようにしてください。
今回ご紹介する手順は「なければ追加する」操作です。
Windowsでレジストリエディタを開く方法に書かれている通りに、レジストリを開きます。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs]というキーがあるか、確認するために、Rootから以下のようにたどっていきます。
HKEY_LOCAL_MACHINE
↳SOFTWARE
↳Microsoft
↳.NETFramework
↳v4.0.30319
と展開していくと「SKUs」というキーがありました。
このSKUsキーを展開するとこのようになっているかどうかを確認します。
もし、同じようにキーが登録されていなければ、キーを追加します。
画像のように「SKUs」キーを選択した上で、
「編集」メニュー > 新規 > キー
とクリックし、足りないキー名を入力してOK。
次に[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
のキーがあるかも確認します。Rootから以下のようにたどります。
HKEY_LOCAL_MACHINE
↳SOFTWARE
↳WOW6432Node
↳Microsoft
↳.NETFramework
↳v4.0.30319
すると、SKUsキーはありましたが、元の記事にはこのように記載されています。
わたしの場合、「AspNetEnforceViewStateMac」という値がありませんでした。
そこで、画像のように「v4.0.30319」キーを選択した上で、
「編集」メニュー > 新規 > DWORD(32ビット)値
とクリックし、足りない値の名前「AspNetEnforceViewStateMac」を入力して、値のデータ「00000001」を入力してOK。
次にその下の「SKUs」キーを展開して、次のようになっているか確認します。
わたしの場合、このSKUsキーの下にほとんどキーが存在しませんでした。
なので、
「編集」メニュー > 新規 > キー
とクリックし、足りないキー名を入力して次々と追加しました。
これができたら、PCを再起動します。
.Net Frameworkのエラーが消えた!
このレジストリの操作で、無事にエラーが表示されなくなりました。
SKUというのは、こちらの記事にあるように、アプリケーションが指定する.Net Frameworkのバージョンを内部で定義しておくために必要らしいです。
何らかの事情で、Windows Updateでこの「参照」のようなものが途切れてしまい、例えば.Net Framework v4.0を必要とするアプリケーションが、必要なリソースにたどり着けなくなってしまって実行時エラーになっていたのだろうと推測します。
本当にそうなのかは、Windows Update以前のこのレジストリキーを確認していないので分かりませんが…。
それにしても、解決してよかった。ホッとしました。
「PNC株式会社の技術者ブログ」のオーサーさん、どうもありがとう!!
おまけ:ChatGPTは使えなかった
ChatGPT3.5に、この件の解決方法を聞いてみました。
質問:Windows Updateのあと、PC起動時に「This application could not be started. This application requires one of the following versions of the .NET Framework: v4.0.30319 Do you want to install this .NET Framework version now?」というエラーダイアログがたくさん表示されるようになってしまいました。どうすれば解決できますか?
ChatGPT:この問題がWindows Updateの後に発生した場合、いくつかの手順を試してみてください。
.NET Frameworkの再インストール: まず、.NET Frameworkをアンインストールし、その後最新バージョンを再インストールしてみてください。以下が手順です。
コントロールパネルを開き、「プログラムの追加と削除」または「プログラムと機能」を選択します。
.NET Frameworkのエントリを見つけ、アンインストールします。
公式のMicrosoftのウェブサイトから最新の.NET Frameworkをダウンロードしてインストールします。
Windows Updateを再実行: インストールやアンインストールの後に、再度Windows Updateを実行してみてください。システムが最新であることが重要です。
Windows Updateの履歴を確認: Windows Updateの履歴を確認し、最新の更新が正常に適用されたか確認してください。問題のある更新がある場合は、それをアンインストールして再試行してみてください。
システムの復元: Windows Updateの前に正常に動作していたときのシステムの復元ポイントがある場合、それを利用してシステムを以前の状態に戻してみてください。
イベントログの確認: イベントログを確認して、起動時に発生しているエラーの詳細を確認してください。エラーが.NET Frameworkに関連している場合、それに基づいてさらにトラブルシューティングが可能です。
これらの手順のいずれも問題を解決しない場合、アプリケーションが特定の.NET Frameworkバージョンを必要としているか、他の問題がある可能性があります。アプリケーションのサポートや開発者に連絡し、問題の詳細を伝えてサポートを受けることも検討してください。
割とChatGPTにいろいろ聞いてみている生活を送っているのですが、やっぱり慇懃だけど上っ面でタメにならない返答しか返ってこないと感じています。
上記の回答を見ても、.Net Frameworkはアンインストールできないよね?とか、イベントログを確認したところで、出てるエラーは同じなんですけど?と突っ込みたくなってしまう浅いものです。
ときどき間違いを指摘してあげると「申し訳ありません」と謝ってきたりして会話できる感じは嫌いじゃないんですけどね。