「お使いのWindows 7 PCはサポート対象外になっています」の警告画面表示を消す方法とレジストリ

「お使いのWindows 7 PCはサポート対象外になっています」が表示される

2020年01月14日でサポート終了するWindows7ですが、翌日の2020年01月15日 12時以降にPCを起動すると「お使いのWindows 7 PCはサポート対象外になっています」というサポート終了通知画面が表示されるようになります。しかも、タスクバーよりも前面の全画面で表示されます。クローズド環境やスタンドアロン環境など、サポートが終了してもWindows 7を使い続ける予定の方はこの画面に遭遇するかもしれません。

2019年12月分の更新プログラムで仕込まれる

これは2019年12月分マンスリー品質ロールアッププログラムKB4530734)または、セキュリティのみの品質更新プログラムKB4530692)をインストールすると、以下が登録されるために起こります。

よって、この更新プログラムをインストールしなければ大丈夫ですが、常にオンラインで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になっていました。

サポート終了通知が表示される条件

以下の条件をすべて満たしているとこの「サポート終了通知」の画面が表示されます。逆に、どれか一つでも該当しないもがあれば表示されません。

この画面が表示されるタイミング

タスクマネージャーのトリガーを確認して見たところ、以下のようになっていました。

EOSNotifyのトリガー

EOSNotify2のトリガー

日時を変更してテスト表示してみた

「お使いのWindows 7 PCはサポート対象外になっています」の画面がどのように表示されるのか見てみようと、タスクを実行したり、EOSNotify.exe(C:\Windows\system32\EOSNotify.exe)をダブルクリックしても現段階ではサポート終了していないので何も起こらず画面は表示されませんでした。

そこで、PCの日時を一時的に2020年01月15日の12時以降に変更してテストしてみたところ、PCを再起動してからのログオン後、デスクトップが表示された直後に表示されました。この画面はタスクバーよりも前面の全画面で表示されました。

この画面を表示しないようにするための方法

以下のいずれかの方法を行えば、画面は表示されなくなります。

方法1:「今後、このメッセージを表示しない」をクリックする

一番簡単な方法です。画面左下の「今後、このメッセージを表示しない」をクリックすれば、次回起動時から以降は表示されなくなります。ただし、対象はクリックしたログオンユーザーのみとなりますので、一度もクリックしていない違うユーザーがログオンしたときは表示されます。

方法2:レジストリを登録する

「方法1」「今後、このメッセージを表示しない」をクリックすると以下のレジストリDiscontinueEOSが登録されています。このレジストリを予め登録しておけば、「今後、このメッセージを表示しない」をクリックしたことと同じことになり、初めからこの画面が表示されることはありません。

LastRunTimestampは画面表示が行われたときに作成されるレジストリで、削除すれば一度も表示されたことが無い状態になります。レジストリキーEOSNotifyごと削除するかDiscontinueEOSLastRunTimestampの値の両方を削除すると、まだ一度も表示されおらず、「今後、このメッセージを表示しない」もクリックされていない状態になるので、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を起動する手段がなくなりますので、サポート終了通知画面は表示されなくなります。全てのログオンユーザーが対象になり、コンピューター全体で誰が使用しても表示できないようにしたいときに有効な手段となります。

  1. [コントールパネル]-[管理ツール]-[タスクスケジューラ]を起動します。
  2. 画面左のツリーを[タスクスケジューラ(ローカル)]-[タスクスケジューラ ライブラリ]-[Microsoft]-[Windows]-[Setup]まで展開します。
  3. 「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
PAGETOP