「お使いのWindows 7 PCはサポート対象外になっています」が表示される
2020年01月14日でサポート終了するWindows7ですが、翌日の2020年01月15日 12時以降にPCを起動すると「お使いのWindows 7 PCはサポート対象外になっています」というサポート終了通知画面が表示されるようになります。しかも、タスクバーよりも前面の全画面で表示されます。クローズド環境やスタンドアロン環境など、サポートが終了してもWindows 7を使い続ける予定の方はこの画面に遭遇するかもしれません。
2019年12月分の更新プログラムで仕込まれる
これは2019年12月分のマンスリー品質ロールアッププログラム(KB4530734)または、セキュリティのみの品質更新プログラム(KB4530692)をインストールすると、以下が登録されるために起こります。
- EOSNotify.exeがインストールされる。
(c:\Windows\system32\EOSNotify.exe) - タスクスケジューラにEOSNotifyとEOSNotify2というタスクが登録される。
よって、この更新プログラムをインストールしなければ大丈夫ですが、常にオンラインでWindows Updateが自動で行われる環境では確実に適用されます。今後配信されるいずれかのKBにも含まれるかもしれません。
2020年1月分のロールアップにも含まれていた(2020/01/16追記)
Windows7最後のロールアッププログラムであろう2020年1月分のマンスリー品質ロールアッププログラム(KB4534310)とセキュリティのみの品質更新プログラム(KB4534314)にもEosnotify.exe
が含まれていました。しかも、KB4534310のファイル情報を見るとバージョンアップされていました。2019年12月分のバージョンは6.1.7601.24541
で2020年1月は6.1.7601.24544
になっていました。
サポート終了通知が表示される条件
以下の条件をすべて満たしているとこの「サポート終了通知」の画面が表示されます。逆に、どれか一つでも該当しないもがあれば表示されません。
- ドメインに参加していない
- 拡張セキュリティ更新プログラム(ESU)(Windows 7の延命)が適用されていない
- KIOSKモード(Webページ閲覧しかできない)ではない
- レジストリ
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\EOSNotify
にあるDiscontinueEOS
がdword:00000001
ではない
(「今後、このメッセージを表示しない」をクリックしたときに設定されるレジストリ)
この画面が表示されるタイミング
タスクマネージャーのトリガーを確認して見たところ、以下のようになっていました。
EOSNotifyのトリガー
- ワークステーションのアンロック(ロック解除)
- ログオン時
- ユーザーセッションへの接続時
EOSNotify2のトリガー
- 毎日12時以降のアイドル時
日時を変更してテスト表示してみた
「お使いのWindows 7 PCはサポート対象外になっています」の画面がどのように表示されるのか見てみようと、タスクを実行したり、EOSNotify.exe(C:\Windows\system32\EOSNotify.exe)をダブルクリックしても現段階ではサポート終了していないので何も起こらず画面は表示されませんでした。
そこで、PCの日時を一時的に2020年01月15日の12時以降に変更してテストしてみたところ、PCを再起動してからのログオン後、デスクトップが表示された直後に表示されました。この画面はタスクバーよりも前面の全画面で表示されました。
この画面を表示しないようにするための方法
以下のいずれかの方法を行えば、画面は表示されなくなります。
方法1:「今後、このメッセージを表示しない」をクリックする
一番簡単な方法です。画面左下の「今後、このメッセージを表示しない」をクリックすれば、次回起動時から以降は表示されなくなります。ただし、対象はクリックしたログオンユーザーのみとなりますので、一度もクリックしていない違うユーザーがログオンしたときは表示されます。
方法2:レジストリを登録する
「方法1」で「今後、このメッセージを表示しない」をクリックすると以下のレジストリDiscontinueEOS
が登録されています。このレジストリを予め登録しておけば、「今後、このメッセージを表示しない」をクリックしたことと同じことになり、初めからこの画面が表示されることはありません。
LastRunTimestamp
は画面表示が行われたときに作成されるレジストリで、削除すれば一度も表示されたことが無い状態になります。レジストリキーEOSNotify
ごと削除するかDiscontinueEOS
とLastRunTimestamp
の値の両方を削除すると、まだ一度も表示されおらず、「今後、このメッセージを表示しない」もクリックされていない状態になるので、PCを次回起動したときはまた画面が表示されます。
また、HKEY_CURRENT_USER
から始まるレジストリはログオンしているユーザーのみに適用することになります。ユーザー単位ではなく、コンピューターを使用するすべてのユーザーに対して適用したい場合は、HKEY_LOCAL_MACHINE
から始まるレジストリを登録すればPC単位で適用できます。
ログオンしているユーザーのみ表示しないようにするレジストリ
キー | HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\EOSNotify |
値の名前 | DiscontinueEOS |
タイプ | REG_DWORD |
値のデータ | 1 |
このレジストリを登録するコマンド
以下のコマンドを管理者として起動したコマンドプロンプトで実行すれば、このレジストリを登録できます。
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\EOSNotify /v DiscontinueEOS /t REG_DWORD /d 1 /f
全ユーザー(コンピューター全体)を対象に表示しないようにするレジストリ
キー | HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\EOSNotify |
値の名前 | DiscontinueEOS |
タイプ | REG_DWORD |
値のデータ | 1 |
このレジストリを登録するコマンド
以下のコマンドを管理者として起動したコマンドプロンプトで実行すれば、このレジストリを登録できます。
reg add HKLM\Software\Microsoft\Windows\CurrentVersion\EOSNotify /v DiscontinueEOS /t REG_DWORD /d 1 /f
方法3:タスクマネージャーからタスク「EOSNotify」と「EOSNotify2」を無効化・削除する
タスクを無効化、または削除すればEOSNotify.exeを起動する手段がなくなりますので、サポート終了通知画面は表示されなくなります。全てのログオンユーザーが対象になり、コンピューター全体で誰が使用しても表示できないようにしたいときに有効な手段となります。
- [コントールパネル]-[管理ツール]-[タスクスケジューラ]を起動します。
- 画面左のツリーを[タスクスケジューラ(ローカル)]-[タスクスケジューラ ライブラリ]-[Microsoft]-[Windows]-[Setup]まで展開します。
- 「EOSNotify」と「EOSNotify2」をそれぞれ右クリックメニューから「無効」または「削除」します。
このタスクを無効にするコマンド
以下のコマンドを管理者として起動したコマンドプロンプトで実行すれば、タスクスケジューラからこのタスクを無効にできます。
schtasks /change /tn "Microsoft\Windows\Setup\EOSNotify" /disable schtasks /change /tn "Microsoft\Windows\Setup\EOSNotify2" /disable
このコマンドを実行したところ、タスクスケジューラのタスクが無効になりました。
このタスクを削除するコマンド
以下のコマンドを管理者として起動したコマンドプロンプトで実行すれば、タスクスケジューラからこのタスクを削除できます。
schtasks /delete /tn "Microsoft\Windows\Setup\EOSNotify" /F schtasks /delete /tn "Microsoft\Windows\Setup\EOSNotify2" /F
このコマンドを実行したところ、タスクスケジューラのタスクが無くなりました。
また、タスクが保管されているフォルダC:\Windws\System32\Tasks\Microsoft\Windows\Setup
の中身も削除されていました。
↓
方法4:EOSNotify.exeを削除する
本体そのものを削除すればタスクスケジューラから起動しようにも本体のEOSNotify.exeがなければ表示できなくなるはずなのでc:\Windows\system32\EOSNotify.exe
を削除します。
しかし、アクセス権が拒否され削除できませんでした。TrusstedInstaller
というユーザー権限が必要みたいで、「ファイルアクセスの拒否」という画面が表示され管理者でも削除できませんでした。
完全に表示されないようにするバッチファイル例
以下のソースは「方法2」と「方法3」の両方を行い確実に表示されないようにするバッチファイルの例です。メモ帳などのテキストエディタに貼り付け、DisableEOSNotify.bat
など適当に名前を付けて保存してください。実行するときは管理者として実行してください。
@echo off echo. echo ======================================================== echo 「お使いの Windows 7 PC はサポート対象外になっています」 echo のサポート終了通知画面が表示されないようにします。 echo ======================================================== echo. pause echo. echo レジストリを登録しています echo. :: 「今後、このメッセージを表示しない」を設定するレジストリを登録 reg add HKLM\Software\Microsoft\Windows\CurrentVersion\EOSNotify /v DiscontinueEOS /t REG_DWORD /d 1 /f echo. echo タスクスケジューラからタスク「EOSNotify」と「EOSNotify2」を無効化します。 echo. :: タスクスケジューラに「EOSNotify2」があれば無効にする schtasks|find "EOSNotify2" if %ERRORLEVEL% equ 0 ( rem 無効にする場合 schtasks /change /tn "Microsoft\Windows\Setup\EOSNotify2" /disable rem 削除する場合 rem schtasks /delete /tn "Microsoft\Windows\Setup\EOSNotify2" /F ) echo. :: タスクスケジューラに「EOSNotify」があれば無効にする schtasks|find "EOSNotify" if %ERRORLEVEL% equ 0 ( rem 無効にする場合 schtasks /change /tn "Microsoft\Windows\Setup\EOSNotify" /disable rem 削除する場合 rem schtasks /delete /tn "Microsoft\Windows\Setup\EOSNotify" /F ) echo. echo EOSNotify.exeを削除します。 echo. :: アクセス拒否され失敗するけど :: EOSNotify.exeが存在していれば削除 if exist %WINDIR%\system32\EOSNotify.exe ( del %WINDIR%\system32\EOSNotify.exe /Q ) echo. echo 終わりました。 echo. pause