【Azure】WindowsServer2016の日本語化ができない場合の暫定対応

先日、Udemyの受講生からの申告で、WindowsServer2016の日本語化ができない状態になっていることがわかりました。言語パックのインストール時に「Some updates were not installed」と表示されます。結果、display languageが日本語になりません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402286/6e688a59-8fd7-517b-de12-2683e8dc678d.png)

※試したイメージは、[smalldisk]WindowsServer 2016 DataCenter - Gen1 です。

# 切り分け

以下を試してもダメだったのでサポートに問い合わせしました。

- VM作り直し
- 再起動
- WindowsUpdate適用

ちなみに、今はサポートプランを契約していないので技術サポートを受けるためにはアップグレードする必要があったのですが、まず先にTwitterで [@AzureSupport](https://twitter.com/AzureSupport) にDMで(英語で)問い合わせました。サブスクリプションIDとVMのリソースIDも伝えて調べてもらったのですが、割とすぐにAzureサポートに問い合わせするよう誘導されました。

その時に1回のみ技術サポートを受けるためのID？のようなものを発行してくれて、Azureポータルからいつもどおりサポートリクエストを作成することができました。感動！

# 原因

Azure基盤側の問題でした。現時点で復旧がいつになるかは不明。
WindowsServer2016のイメージ内にあるTxRフォルダ配下にトランザクションログが溜まっていることが原因だそうです。

**2021/5/26追記**
Azure テクニカルサポートチームのBlogにも対応手順が公開されていました。
[Azure 環境における Windows Server 2016 にて日本語の言語パック適用ができない](https://jpaztech.github.io/blog/vm/win2016-jp-lpk-issue/)
~~5月中には修正完了予定のようです。~~

**2021/6/1追記**
~~修正に時間がかかっているようで、6/1現在、まだ修正完了していません。~~
~~6月2週目くらいに修正完了予定のようです。~~

**2021/7/19追記**
通常のイメージは6月中旬に修正されましたが、smalldiskのイメージもようやく修正されました。

# 解決策（暫定）

案内された手順を実施して、不要なトランザクションログを削除すると日本語化できたので、手順をシェアします。

##  1)MoveFileの入手

以下のサイトより"PendMoves.zip" をダウンロードし解凍します。
movefile.exeを対象の仮想マシンにコピーします。(同梱のpendmoves.exe は使用しません)

[PendMoves v1.02 and MoveFile v1.01](https://docs.microsoft.com/ja-jp/sysinternals/downloads/pendmoves)

##  2) attrib コマンドで隠し属性を解除

コマンド プロンプトを管理者として起動し以下のコマンドを実行します。
そうすると、溜まっているトランザクションログのファイルが見えるようになります。

```batch
cd C:\Windows\system32\config\txr
attrib -r -s -h *
```

## 3) movefile.exe でTxR配下のファイルを削除

cdコマンドで movefile.exe が保存されているディレクトリに移動して`movefile.exe "TxRフォルダにあるファイル名の絶対パス" ""`の形式で1つずつコマンドを実行していきます。<移動先> を空欄("")にすることで、次回再起動時にファイルの削除がスケジュールされます。

なお、TxR 配下のファイルを普通に削除しようとしても、システム稼働時は常にシステムプロセスが参照しているため、削除しようとしてもエラーとなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402286/6ab0112a-bc28-6938-1d9f-0a4a1fa9a529.png)


以下、コマンドの実行例。ファイル名が長いですが、やってることは単純です。

```
movefile.exe “C:\Windows\System32\config\TxR\{711988c4-afbd-11e6-80c9-782bcb3928e1}.TxR.0.regtrans-ms” “”
movefile.exe “C:\Windows\System32\config\TxR\{711988c4-afbd-11e6-80c9-782bcb3928e1}.TxR.1.regtrans-ms” “”
movefile.exe “C:\Windows\System32\config\TxR\{711988c4-afbd-11e6-80c9-782bcb3928e1}.TxR.2.regtrans-ms” “”
movefile.exe “C:\Windows\System32\config\TxR\{711988c4-afbd-11e6-80c9-782bcb3928e1}.TxR.blf” “”
movefile.exe “C:\Windows\System32\config\TxR\{711988c5-afbd-11e6-80c9-782bcb3928e1}.TM.blf“ “”
movefile.exe “C:\Windows\System32\config\TxR\{711988c5-afbd-11e6-80c9-782bcb3928e1}.TMContainer00000000000000000001.regtrans-ms” “”
movefile.exe “C:\Windows\System32\config\TxR\{711988c5-afbd-11e6-80c9-782bcb3928e1}.TMContainer00000000000000000002.regtrans-ms” “”
```

## 4) 再起動

コマンド実行できたらWindows再起動します。
再起動後、日本語化のインストールが成功することを確認しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402286/397088d3-f19c-48e3-1a00-1a96370b4cb4.png)

インストールが完了したらOptionsを押します。
`Make this the primary language`をクリックしてログオフし、display languageを日本語にします。(この選択がない場合は不要）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402286/2b9f25de-d1a2-ec64-7f7d-6e9b3dbfac3d.png)

あとは以下のページにあるような通常の日本語化手順で地域やロケールなどを設定すればOKです。
無事日本語化できたらsysprepしてイメージを作成しておきましょう。

[【図解】英語版Windowsの日本語化～画面ショット付き詳細手順～](https://blog.trainocate.co.jp/blog/azure_setting_024)



# まとめ

Azureを学習されようとされている方で、最初の時期にやることがおそらくVM起動と日本語化かと思います。そんな方のお役に立てれば幸いです。早く解消されるといいですね。

さいごに。
~~本記事でご紹介した手順はあくまで私個人の体験談で、MS社からの公式なアナウンスではありません。予めご了承くださいませ。~~

MS社のブログ記事で本事象の対応手順、修正状況が公開されています。
2021/7/19にsmalldiskのイメージ含めて修正されたことを確認済み。
[Azure 環境における Windows Server 2016 にて日本語の言語パック適用ができない](https://jpaztech.github.io/blog/vm/win2016-jp-lpk-issue/)