前回は、UWPアプリの情報を持つAppManifest.xmlとAppResources.priから生成したxmlファイルの組みあわせでアプリの日本語表示名を見つけるところまで解析ができた。ただし、どちらもxmlファイルに情報が含まれており、2つのファイルで情報を突き合わせないとデータとしては取り出すことができない。今回は、PowerShellでxmlファイルを解析させて情報を引き出してみる。
PowerShellでXMLを扱う
PowerShellは、.NET Frameworkのすべての機能を利用できるように作られたコマンドラインインタープリター(コマンドシェル)/スクリプト言語である。Windowsに付属のCMD.EXEは、MS-DOS時代からのコマンドシェルであり、そもそも当時は、BIOSやMS-DOS機能呼び出しは、すべてバイナリ形式のプログラムから呼び出す必要があり、CMD.EXEは限られた機能しかもっていなかった。
.NET Frameworkは、XMLをオブジェクトとして扱う機能があり、PowerShell内では、XMLオブジェクトとして変数によみこんだxmlファイルを扱うことができる。最初に必要になるのは、変数にXMLファイルを読み込んでXMLオブジェクトと認識させることだ。それには以下のようなコマンドを使えば良い。
$MsMessaging = [XML](Get-Content -Encoding UTF8 C:\temp\appxpri\Microsoft.Messaging.xml)
先頭の「$MsMessaging」は、XMLを読み込む変数名なので、先頭が$ならなんでもよい。ただし、以後この変数名で説明するので、適宜読み替えてほしい。代入を示す「=」の次にある「[XML]」は、後続するコマンドから変数に代入する情報がXMLオブジェクトであることを示すもので、一般的には「キャスト」と呼ばれる。
カッコ内の「Get-Content」コマンドは、最後にあるパスで示されるXMLを読み込むもの。ここでファイルの文字コードがUTF8であることを指定している。これは、PowerShellのデフォルトの文字コードがシフトJISだからだ。特に日本語のリソースを扱う場合には、必ず指定が必要だ。
これで変数$MsMessagingには、XMLファイルが読み込まれた。キャストしてあるので、PowerShellは、この変数にはXMLオブジェクトが入っていることを認識している。このため、XMLオブジェクト(正確にはSystem.Xml.XmlDocument)用のプロパティやメソッドを自動で補完できる状態になっている。たとえば、「$MsMessaging.x」と入力してタブキーを押せば「$MsMessaging.xml」と補完されて、エンターキーで、その実行結果を表示する。これは、XMLファイルの先頭にある行(一般にXML宣言と呼ばれるもの)を表示している。
なお、XMLファイルは、ウェブブラウザで表示することが可能だ。XMLファイルの保存先をエクスプローラーで開いて、XMLファイルのダブルクリックで、ブラウザ(.xmlファイルに関連付けられたもの)が起動する。ここでは、Windows 10標準のEdgeを利用する。コマンドラインからXMLファイルを表示させたければ、
C:\temp\appxpri\Microsoft.Messaging.xml
などのようにファイルを直接開けばよい。好みのブラウザを使ってかまわないが、ここではEdgeを使った場合を例示することにする。
EdgeでXMLファイルを開くと、すべての項目が表示された状態なので、全体が把握しにくい。
行の先頭にある「-」をクリックすると、下位レベルの表示をまとめて行が縮まる。Priファイル由来のXMLファイルでは、PriInfoというトップレベルにあるタグ(ルートという)から3レベルまでの表示にしておくと全体をコンパクトに見渡せる。
先ほど実行した$MsMessaging.xmlと同じ内容が、XMLファイルの先頭にあるはずだ。ただし、先頭行は「<?xml」と「?>」で囲まれている。
この連載の記事
-
第466回
PC
PowerToysの最近の新機能には、複数アプリを指定位置に起動する「ワークスペース」や新規作成のカスタマイズがある -
第465回
PC
WindowsのPowerShellからBluetoothデバイスを調べる -
第464回
PC
Windows 10のサポート切れまで1年を切った さてWindows 10マシンをどうする? -
第463回
PC
Windows Terminal Preview版でSixelグラフィックスを実際に表示させてみる -
第462回
PC
Windows Terminal Preview版でSixelグラフィックスを扱う -
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ - この連載の一覧へ