新元号が「令和」と発表され、世間もお祝いムードです。ITの世界では新元号対応で盛り上がっています。
Windows XPはサポートが終了しているので、当然新元号対応はされません。自力でWindows XPの新元号対応をやってみます。
Windows 7以降の新元号対応
Windows 7以降は元号はレジストリで管理されています。
[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"="令和_令_Reiwa_R"
見て分かる通り
という形式です。
そもそもWindows Updateで対応されるので、対応は不要ですが。
半年くらい前のWindows Updateで以下のレジストリが追加されて問題になりました。
"2019 05 01"="??_?_?????_?
その頃はまだ新元号が発表されていなかったので苦肉の対応だったのでしょうが、勇み足でしたね。
locale.nlsの編集
Windows XPはレジストリでは対応できません。
サポートも切れているので、Windows Updateでも対応されません。
どうしても対応したい場合は、システムのファイルを直接編集することになります。
C:¥Windows¥System32¥locale.nls
このファイルをデスクトップにでもコピーして編集しましょう。
ファイルはバイナリなのでバイナリエディタで編集します。
バイナリエディタは何でもいいのですが、例えばこんなものがあります。
freesoft-100.com
0x03F8F0の位置に元号の情報が入っています。
平成はの定義は以下のようになっています。
01 00 08 00 C5 07 0C 00 31 00 39 00 38 00 39 00 00 00 73 5E 10 62 00 00
これはリトルエンディアン形式で、文字はUTF-16、数値は16進数で表現されています。
分解すると、こうなります。
0100 | 0800 | C507 | 0C00 | 3100 | 3900 | 3800 | 3900 | 0000 | 735E | 1062 | 0000 |
1 | 8 | 1989 | 12 | 1 | 9 | 8 | 9 | \0 | 平 | 成 | \0 |
月 | 日 | 年 | データ長 | 年(文字列) | \0 | 年号 | \0 |
同様に令和を表すとこうです。
0500 | 0100 | E307 | 0C00 | 3200 | 3000 | 3100 | 3900 | 0000 | E44E | 8C54 | 0000 |
5 | 1 | 2019 | 12 | 2 | 0 | 1 | 9 | \0 | 令 | 和 | \0 |
これを平成の定義の前に挿入すればよいです。
05 00 01 00 E3 07 0C 00 32 00 30 00 31 00 39 00 00 00 E4 4E 8C 54 00 00
locale.nlsファイルの置換
locale.nlsが無事作成できたとして、ファイルを置換するのが意外と難しいです。
単純に C:¥Windows¥System32¥ にコピーしようとしても拒否されます。
C:¥Windows¥System32¥locale.nls をリネームしてからならコピーできますが、Windowsを再起動すると元のファイルが再作成されてしまいます。
Windowsが動いていない状態でコピーするしかありません。
つまり
といった作業が必要になります。
どちらも面倒ですが、これで無事XPの新元号(令和)対応は完成です。
それっぽく動いていますが、実行は自己責任で。
- 作者: 所功,久禮旦雄,吉野健一
- 出版社/メーカー: 文藝春秋
- 発売日: 2018/03/20
- メディア: 新書
- この商品を含むブログを見る
【旧商品/サポート終了】Microsoft Windows XP Professional SP1
- 出版社/メーカー: マイクロソフト
- 発売日: 2002/11/01
- メディア: CD-ROM
- クリック: 5回
- この商品を含むブログ (3件) を見る