かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

MSIX でパッケージングしたアプリから見えるファイルシステムとレジストリの確認方法

知らなかったけど、こんなコマンドがあったんだ。

docs.microsoft.com

Package.appxmanifest の Packaging タブで Package family name: を控えてこんな感じのコマンドでパッケージ化されたアプリから見えるレジストリキーが見えた

Invoke-CommandInDesktopPackage -PackageFamilyName "a3c6c55d-67da-49c4-ba72-d68f97906c69_bvcq4yqpbrjyj" -Command "regedit.exe" -PreventBreakaway

これで、パッケージ化されたアプリから見えるファイルシステムが見えるコマンドプロンプトが立ち上がった。

Invoke-CommandInDesktopPackage -PackageFamilyName "a3c6c55d-67da-49c4-ba72-d68f97906c69_bvcq4yqpbrjyj" -Command "cmd.exe" -PreventBreakaway

パッケージ化されたアプリから AppData の下に MyTestApp フォルダーを作って mytestdata.txt に適当にデータを書き込んでみるようなコードを書いてみました。

private void Button_Click(object sender, RoutedEventArgs e)
{
    var path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
    var appFolder = Path.Combine(path, "MyTestApp");
    Directory.CreateDirectory(appFolder);
    using (var sw = new StreamWriter(Path.Combine(appFolder, "mytestdata.txt")))
    {
        sw.WriteLine("Hello world");
    }
}

先ほどのコマンドプロンプトから AppData フォルダーに移動してメモ帳起動してみたらばっちりですね。

f:id:okazuki:20191025102050p:plain

まとめ

困ったときに便利そう。