Skip to content

Instantly share code, notes, and snippets.

@TakashiSasaki
Last active March 3, 2025 06:33
Show Gist options
  • Select an option

  • Save TakashiSasaki/528e707648e0cfd01c578555cd45e1f6 to your computer and use it in GitHub Desktop.

Select an option

Save TakashiSasaki/528e707648e0cfd01c578555cd45e1f6 to your computer and use it in GitHub Desktop.

WindowsにおけるApp Pathsの仕組みとその歴史

目次

  1. はじめに
  2. App Pathsとは
  3. 古いWindowsでのサポート状況
  4. PATH環境変数との関係
  5. コマンド検索における優先順位
  6. 64ビット版Windowsにおける変更点
  7. まとめ

1. はじめに

Windowsには、アプリケーションを簡単に実行するための仕組みとして「App Paths」というレジストリキーが存在する。この機能を利用することで、環境変数PATHを設定しなくても、特定のアプリケーションをコマンドラインや「ファイル名を指定して実行」(Win + R) から実行できる。

本記事では、App Pathsの基本的な仕組み、古いWindowsでの対応状況、PATH環境変数との違い、コマンド検索時の優先順位、そして64ビット版Windowsでの変更点について詳しく解説する。

2. App Pathsとは

App Paths は、レジストリの以下のキーに登録される情報を指す。

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths

ここにアプリケーションごとのサブキーを作成し、実行ファイルのパスを登録することで、フルパスを入力しなくても実行できるようになる。

例えば、C:\Program Files\MyApp\myapp.exemyapp という名前で登録する場合、以下のようにレジストリを設定する。

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\myapp.exe]
@="C:\\Program Files\\MyApp\\myapp.exe"
"Path"="C:\\Program Files\\MyApp"

この設定を行うことで、コマンドプロンプト (cmd.exe) や Win + Rmyapp と入力するだけで、指定した実行ファイルが起動する。

3. 古いWindowsでのサポート状況

Windows 95, 98, Me (9x系)

Windows 95の時点で App Paths はすでに存在し、「ファイル名を指定して実行」ダイアログ (Win + R) などで活用されていた。

Windows NT 4.0, 2000, XP

NT系のWindowsでも App Paths は利用可能であり、HKEY_CURRENT_USER (ユーザーごと) と HKEY_LOCAL_MACHINE (システム全体) の両方で設定できるようになった。

Windows Vista 以降

Windows Vista 以降も App Paths は引き続きサポートされているが、アプリケーションの管理方法が変わったことで、利用頻度は減少した。特に、PATH 環境変数やスタートメニューの検索機能が強化されたため、手動で App Paths を設定する機会は少なくなっている。

4. PATH環境変数との関係

App PathsPATH 環境変数とは独立して動作する。通常、環境変数 PATH に実行ファイルのディレクトリを追加することで、どこからでも実行できるようになる。しかし、App Paths を使うと、PATH を変更せずにアプリケーションを実行できる。

App Paths に登録されたアプリケーションは、PATH に登録されていなくても、cmdWin + R から実行可能であり、特定のアプリのみを簡単に呼び出せるというメリットがある。

5. コマンド検索における優先順位

Windowsでコマンドを実行する際、以下の順序で検索が行われる。

  1. カレントディレクトリ
  2. App Paths に登録されたエントリ
  3. PATH 環境変数
  4. Windowsの標準検索パス (System32 など)

このため、App Paths に登録されたアプリケーションは、PATH に登録されたディレクトリ内の実行ファイルよりも優先的に実行される。例えば、App Pathsnotepad.exe を別の場所に登録した場合、Windows標準の C:\Windows\System32\notepad.exe よりも優先して実行される。

6. 64ビット版Windowsにおける変更点

64ビット版Windowsが一般的になったことで、App Paths に関連する変更点がいくつかある。

  1. WOW64 (Windows-on-Windows 64-bit) の影響

    • 32ビットアプリケーションは HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\App Paths に登録される。
    • 64ビットアプリは従来通り HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths に登録される。
    • 32ビットプロセスは Wow6432Node のキーを優先して参照するため、レジストリ設定時には注意が必要。
  2. プログラムフォルダの分離

    • 64ビットアプリは通常 C:\Program Files\ にインストールされる。
    • 32ビットアプリは C:\Program Files (x86)\ にインストールされる。
    • App Paths の設定を行う際、適切なパスを指定しないと、意図しない実行結果になる可能性がある。
  3. 管理者権限の影響

    • HKEY_LOCAL_MACHINEApp Paths を登録する場合、管理者権限が必要。
    • HKEY_CURRENT_USER に登録することで、ユーザーごとに設定可能。

7. まとめ

  • App PathsWindows 95 以降のすべてのバージョン で利用可能。
  • PATH 環境変数を変更せずに、特定のアプリケーションを簡単に実行できる。
  • cmdWin + R での実行時、PATH よりも 優先的に検索される
  • 64ビット版Windowsでは Wow6432Node が導入され、32ビットと64ビットのアプリケーションが分離された。
  • 近年は PATH やスタートメニュー検索の強化により利用頻度は減少したが、互換性のために機能は維持されている。

このように、App Paths はレガシーシステムのメンテナンスや、特定のアプリを簡単に実行する方法として、今でも有用な仕組みである。

Microsoft Store 版 Python のインストールとレジストリ登録の仕組み

1. はじめに

Microsoft Store 版 Python をインストールすると、通常の Python のインストールとは異なり、Windows のアプリ実行エイリアス (App Execution Alias) やレジストリ (App Paths) に特定のエントリが自動的に作成されます。また、C:\Users\<ユーザー名>\AppData\Local\Microsoft\WindowsApps にプレースホルダーとして ファイルサイズ 0 KB の実行ファイル が作成されます。本記事では、その登録プロセスと Windows のアプリ解決機構について詳細に解説します。

2. Microsoft Store 版 Python のマニフェストとレジストリ登録

Microsoft Store 版の Python は、UWP (Universal Windows Platform) のアプリとして提供され、インストール時に C:\Program Files\WindowsApps 内に格納されます。このアプリは AppX マニフェスト (AppxManifest.xml) に基づき、システム内で動作するための情報を Windows に登録します。

2.1. マニフェストの構成

Python の AppxManifest.xml には、アプリの実行方法や関連付けるレジストリキーの情報が含まれています。以下はその一部の例です。

<uap5:Extension Category="windows.appExecutionAlias">
    <uap5:AppExecutionAlias desktop4:Subsystem="console">
        <uap5:ExecutionAlias Alias="python.exe"/>
        <uap5:ExecutionAlias Alias="python3.exe"/>
        <uap5:ExecutionAlias Alias="python3.13.exe"/>
    </uap5:AppExecutionAlias>
</uap5:Extension>
<uap5:Extension Category="windows.appExecutionAlias">
    <uap5:AppExecutionAlias desktop4:Subsystem="windows">
        <uap5:ExecutionAlias Alias="pythonw.exe"/>
        <uap5:ExecutionAlias Alias="pythonw3.exe"/>
        <uap5:ExecutionAlias Alias="pythonw3.13.exe"/>
    </uap5:AppExecutionAlias>
</uap5:Extension>
<uap5:Extension Category="windows.appExecutionAlias">
    <uap5:AppExecutionAlias desktop4:Subsystem="console">
        <uap5:ExecutionAlias Alias="pip.exe"/>
        <uap5:ExecutionAlias Alias="pip3.exe"/>
        <uap5:ExecutionAlias Alias="pip3.13.exe"/>
    </uap5:AppExecutionAlias>
</uap5:Extension>
<uap5:Extension Category="windows.appExecutionAlias">
    <uap5:AppExecutionAlias desktop4:Subsystem="windows">
        <uap5:ExecutionAlias Alias="idle.exe"/>
        <uap5:ExecutionAlias Alias="idle3.exe"/>
        <uap5:ExecutionAlias Alias="idle3.13.exe"/>
    </uap5:AppExecutionAlias>
</uap5:Extension>

この設定により、Microsoft Store 版の Python が python.exe というエイリアス を持つようになります。これにより、コマンドプロンプトや PowerShell で python を実行すると、環境変数 PATH の設定に関わらず Microsoft Store 版 Python が優先的に呼び出されるようになります。

また、このマニフェストに基づき C:\Users\<ユーザー名>\AppData\Local\Microsoft\WindowsApps フォルダに以下のような サイズ 0 KB のプレースホルダー実行ファイル が作成されます。

  • python.exe
  • python3.exe
  • python3.13.exe
  • pip.exe
  • pip3.exe
  • pip3.13.exe

これらのファイルは実際の実行ファイルではなく、Microsoft Store 経由で Python を起動するためのプレースホルダー です。

3. レジストリの App Paths への登録

Microsoft Store 版 Python をインストールすると、Windows のレジストリ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths に新しいエントリが作成されます。

3.1. App Paths への登録内容

以下のようなレジストリエントリが作成されます。

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\python.exe
    (default) : C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python_3.13_3.13.752.0_x64__qbz5n2kfra8p0\python3.13.exe
    Path      : C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python_3.13_3.13.752.0_x64__qbz5n2kfra8p0

このレジストリエントリが存在すると、PATH に Python の実行ファイルが含まれていなくても、python コマンドを実行できるようになります。

3.2. App Paths の動作

Windows はアプリケーションを実行する際、以下の順序で実行ファイルを検索します。

  1. App Paths に登録されたエントリ (レジストリ)
  2. 環境変数 PATH に設定されたパス
  3. カレントディレクトリ

そのため、Microsoft Store 版 Python が App Paths に登録されている場合、環境変数 PATH を書き換えずに python コマンドを実行できるようになります。

4. まとめ

  • Microsoft Store 版 Python は AppxManifest.xml に基づき、App Paths に登録される。
  • App Paths に登録されることで、PATH を設定しなくても python コマンドを実行できる。
  • C:\Users\<ユーザー名>\AppData\Local\Microsoft\WindowsApps にサイズ 0 KB のプレースホルダー実行ファイルが作成され、Microsoft Store 版 Python へリダイレクトされる。
  • この動作により、既存の Python 環境との競合が発生する可能性がある。
@TakashiSasaki

Copy link
Copy Markdown
Author

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment