Windows 10 機能更新プログラム (2018 Spring Release) における元号のレジストリ更新について
皆様こんにちは。
今春リリース予定の Windows 10 の機能更新プログラムでは、新しい元号となる 2019 年 5 月に先立ち、各元号の期間を保持しているレジストリが更新される予定です。新しい元号の名称はまだ公表されていませんので、レジストリにはプレースホルダーとして仮の名称が設定された形となります。
レジストリの更新は、新元号が追加されることに伴う問題をより早い段階で発見し、来る 2019 年 5 月に問題が発生することを未然に防ぐことを目的にリリースされます。Windows 10 Insider Preview での先行公開を経て、既存のアプリケーションやシステムへの影響も検討した上で、このタイミングでリリースされることが決定されました。
更新されるレジストリの設定は以下のとおりです。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras]
"1868 01 01"="明治_明_Meiji_M"
"1912 07 30"="大正_大_Taisho_T"
"1926 12 25"="昭和_昭_Showa_S"
"1989 01 08"="平成_平_Heisei_H"
"2019 05 01"="??_?_??????_?"
レジストリが更新されることで想定されるコントロールや API への影響は、次のようなものが考えられます。
- 2019 年 5 月以降の日付を表す和暦の文字列がプレースホルダーに置き換わる可能性があります。例えば、"2020/10/10" は "??2年10月10日" になります。カレンダー コントロールや、.NET Framework 4 以降はこの変更の影響を受けます。
- 2019 年 5 月以降の日付を表す和暦の文字列を日付型に変換する API やメソッドは、エラーを返したり例外がスローする可能性があります。.NET Framework 4 以降はこの変更の影響を受けます。
- 元号の一覧を返すメソッドやプロパティは 5 つの元号を返します。現在の 4 つの元号を返すことを仮定したアプリケーションなどは影響を受ける可能性があります。
今回の機能更新プログラムの時点では、レジストリを参照している機能はカレンダー コントロールや .NET Framework 4 以降のバージョンなどに限られています。
.NET Framework 3.5 など、本レジストリに未対応の機能や製品については今後対応を進めていく予定で、進展があり次第このブログを通じて情報を発信する予定です。
なお、新元号が公表された後は改めてレジストリが更新される予定のため、例えば "??2年10月10日" は西暦に変換できなくなります。アプリケーションやシステムでは、プレースホルダーの元号をそのままデータベースやファイルなどに保存しないようにご注意ください。現時点で 2019 年 5 月以降の日付を扱う必要がある環境では、お手数をおかけいたしますが、上記で黄色でハイライトしたレジストリ キーを削除するようお願いします。
また、上記の 2. につきましては、次回の機能更新プログラムの時期を目途に、.NET Framework のクラス ライブラリの動作を例外をスローせず許容するように変更する予定です。既存のアプリケーションへの影響も考慮し、この変更は設定などで切り替えを可能とすることも検討しています。詳細な対応方針が決まり情報公開できる運びとなりましたら、このブログを通じてご案内する予定です。
今回の Windows 10 の機能更新プログラムでレジストリの更新を行う目的につきましては、下記の弊社社員のブログ記事でも公開しています。あわせてご参考にしていただければ幸いです。
The Japanese Calendar’s Y2K Moment
https://blogs.msdn.microsoft.com/shawnste/2018/04/12/the-japanese-calendars-y2k-moment/