このページの本文へ

Windows Info 第359回

Windowsでプログラムを実行するルールをあらためて掘り下げる

2022年12月25日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

コマンドプロンプト(cmd.exe)で、何もないディレクトリから「xyzprog」を実行しようとするとエラーになる。しかし、startコマンドを使うと実行できる。このようにcmd.exeのコマンドラインとstartコマンドでは、異なるプログラム起動ルールが適用されている

 WindowsをはじめとしたUnixの影響を受けたOSには、プログラムの実行時にフルパスを指定することなく起動が可能な「検索パス(Search Path)」あるいは「コマンド検索パス」と呼ばれる機能がある。検索パスは、PATH環境変数に定義されたディレクトリのリストから実行ファイルを探す機能だ。Unix開発のきっかけともなったMulticsに装備され、Version 3 Unixに実装された。

 Windowsでは、システム環境変数/ユーザー環境変数の両方でPATH環境変数を定義できる。この環境変数のみ例外的に、システム環境変数、ユーザー環境変数の順に連結されてプロセス環境変数のPATH環境変数となる。

 Windowsの検索パスは、Unixのものをベースにしているが、MS-DOS、Windows用に改良され、プログラムの起動ルールの一部として使われている。大きな違いの1つは、MS-DOSでは、実行ファイルを拡張子で区別していた点だ。当時のハードウェアは性能が低く、記憶媒体もフロッピードライブで低速だったため、ファイルを読んで種類を判定していたのでは起動が遅くなってしまう。そこでファイルの中身ではなく、拡張子で種類を判断していた。

 Windowsでは、プログラムの実行はエクスプローラーやコンソール、ファイル名を指定して実行など、複数の場所から可能だ。このときのプログラム起動ルールを整理してみたい。まずは、わかりやすいコマンドラインでの実行方法を整理する。なお検証は、Windows 11 Ver.22H2(OSビルド22621.963)で行なっている。

実行ファイルの種類

 Windowsの実行ファイル形式はEXE形式のみだが、拡張子としては「.exe」と「.com」がある。「.com」は、MS-DOSのVer.1.0で定義された64KB以下のバイナリ実行ファイルの形式だった。

 そもそも、「.com」は、CP/M-80で8080バイナリ実行ファイルに使われていた拡張子で、MS-DOSのベースとなった86-DOSがCP/M-80の8086版クローンとして作られたため、この拡張子を使っている。ただし、今のWindowsでは16bitモードを廃止したため、拡張子は.comでも中身は.exeと同じである。これはWindowsに付属する「format.com」などの名前を変えないための対策だ。多くのスクリプトが、メディアの初期化コマンドとしてこの名前コマンドを起動しているからだ。

 また、MS-DOSでは、「.bat」の拡張子を持つBatchファイル(中身はテキストファイル)が実行ファイル扱いになっていた。「.com 「.exe」「.bat」は、MS-DOSのとき、拡張子を省略して指定することができた。環境変数による検索パスもサポートされ、このときも前記3つの拡張子を省略することができた。

 Windowsでは、こうしたMS-DOSでの慣習を引き継いだが、実行ファイル扱いとする拡張子をPATHEXT環境変数で指定できるようになった。標準では、Windows 95で追加されたWindows Scripting Host関連の拡張子やMicrosoftコンソール用の「.MSC」などが標準で登録されている。具体的には、

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

となっている。

 この環境変数に拡張子を登録することで、該当の拡張子を持ったファイルは、Batchファイル同様に実行ファイルとして扱われ、拡張子を省略して起動できる。これをこの記事では「PATHEXT実行」と呼ぶ。PATHEXT実行は、カレントディレクトリとPATH環境変数で指定されたディレクトリでのみ有効だ。

 さらにWindowsでは、「関連付け」を使って、拡張子と処理プログラムの対応を指定できるようになった。たとえば標準では、「.txt」ファイルはメモ帳に関連付けされている。このため、カレントディレクトリに「file.txt」があるとき、「file.txt」とコマンドラインに入力すると、メモ帳でfile.txtが開く。データファイルは実行ファイルではないが、見かけ上、「.txt」を持つファイルは、notepad.exeを起動する。この起動方法を本記事では「関連付け起動」と呼ぶことにする。

コマンドラインからの起動

 Windowsの標準のコマンドラインには、cmd.exeとWindows PowerShellの2つがある。そのコマンドラインからの実行を「通常起動」とする。

 また、cmd.exeには、内部コマンドとして「start」があり、これを使うとcmd.exeのコマンドラインとは異なる挙動をする。同様にWindows PowerShellには「Start-Process」コマンドがある。なお、Start-Processコマンドには、「start」というエイリアスが標準で定義されている。これをこの記事では「Start起動」と表記する。

 コマンドラインでは、プログラムの起動法法に大きく3パターンある。1つは、ファイルの拡張子までを指定したフルパス指定だ。このときは、特定の1つのファイルが指定されるので、ルールもなにもなく、ファイルがあればそれが起動される。関連付け起動があるため、多くファイルがこの形式で「起動」できる。

 もう1つは、ファイルパスは指定されているが拡張子が省略されたパターンだ。このときはPATHEXT実行が適用される。複数のファイルが一致した場合、PATHEXTに登録された順番でファイルが選択される。たとえば、コマンドラインで「C:\temp\x」を入力して、「C:\temp」に「x.exe」と「x.bat」か存在したときには、「x.exe」が起動する。というのも、PATHEXTの中で「.exe」が「.bat」よりも前にあるからだ。

 以上の動作は、通常起動でもStart起動でも同じである。最後のパターンは、パスが省略された場合だ。これは、拡張子のありなしで挙動が変わる。具体的には以下の表のようになる。この場合、「カレントディレクトリ検索」「PATH検索」「レジストリ検索」「システムディレクトリ検索」の4段階で実行ファイルを検索する。

 カレントディレクトリ検索では、ファイル名と拡張子が一致したものが起動される「一致実行」、またはPATHEXTにある拡張子だけを実行する「PATHEXT実行」に分かれる。なお、Windows PowerShellでは、カレントディレクトリにあるファイルを実行するにはパス指定が必要となる。このため通常起動ではカレントディレクトリ検索はされない。しかし、Start起動ではコマンドに一致したファイルが一致実行される。

 注意が必要なのは、cmd.exeのstart実行では、拡張子を省略したとき、一致実行を試し、その後にPATHEXT実行を試す。このため、入力コマンドがカレントディレクトリのサブディレクトリと一致した場合にディレクトリが開く。この振る舞いは通常実行では起こらない。

 カレントディレクトリに対象ファイルが見つからなかった場合、次になされるのがPATH検索だ。これは、プロセス環境変数のPATHに指定されているディレクトリを先頭から検索していく検索方法だ。

 通常のコマンドラインでは、拡張子が省略されると実行の対象になるのは、PATHEXTに指定された拡張子のみで、他の拡張子のファイルは対象にならない。しかし、start/start-processの場合、PATHEXTの拡張子が一致しなかったとき、拡張子がないファイルが「関連付け起動」される。このとき、一致すればディレクトリが開くことがある。

 通常起動では、PATH検索で対象が見つからなければエラーになるが、Start起動では、さらに「レジストリ検索」と「システム検索」が行われる。レジストリ検索とは、以下の2つのキーのサブキーに実行ファイルを登録しておくことで、起動が可能になるもの。おもにエクスプローラーからの起動などに使われる方法の1つだ。

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

 このキーの下に実行ファイル名(拡張子を含む)でキーを作り、その既定値にファイルのパスを指定する。「レジストリ検索」は、ここから実行ファイル(拡張子省略可)を検索して、キーが存在すればそれを実行する機能だ。

 「システム検索」は、「C:\Windows」と「C:\Windows\System32」を検索するものだ。このとき拡張子が指定されていて、同名のファイルがあれば、それが「関連付け起動」される。拡張子が省略されている場合には、基本となる拡張子「.exe」「.com」「.bat」「.cmd」の4つの拡張子のみが検索対象になる。PATHEXTに登録されている他の拡張子は対象にならない。

 なお、Windows 10/11では、システム環境変数PATHにこの2つのフォルダが標準で登録されていることに注意したい。標準では、PATH検索の段階でファイルが存在すれば検索がヒットするため、システム検索まで到達しない。

 最新のWindows 11で起動ルールを調べてみたが、かなり複雑だ。実際には、これ以外にも「ファイル名を指定して実行」の機能や、APIからの起動などがある。次回はそのあたりを調べることにする。

カテゴリートップへ

この連載の記事
1
【整備済み品】 富士通 ノートパソコン LIFEBOOK MU937 超軽量 薄型ノートPC■Win11搭載 / MS Office H&B 2019 / FHD(1920x1080)/第七世代 Celeron/8GBメモリ/SSD 256GB/Webカメラ内蔵/13.3インチ
【整備済み品】 富士通 ノートパソコン LIFEBOOK MU937 超軽量 薄型ノートPC■Win11搭載 / MS Office H&B 2019 / FHD(1920x1080)/第七世代 Celeron/8GBメモリ/SSD 256GB/Webカメラ内蔵/13.3インチ
¥19,800
2
Lenovo ノートパソコン パソコン IdeaPad Slim 3 14.0インチ 第13世代 インテル® Core™ i5 プロセッサー搭載 13420H メモリ16GB SSD512GB MS Office 2024搭載 Windows11 バッテリー駆動14.1時間 重量1.39kg ルナグレー 83K00072JP ノートPC
Lenovo ノートパソコン パソコン IdeaPad Slim 3 14.0インチ 第13世代 インテル® Core™ i5 プロセッサー搭載 13420H メモリ16GB SSD512GB MS Office 2024搭載 Windows11 バッテリー駆動14.1時間 重量1.39kg ルナグレー 83K00072JP ノートPC
¥107,800
3
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
¥26,880
4
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
¥36,979
5
HP ノートパソコン 15-fd 15.6インチ インテル Core Ultra 5 125H メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 WPS Office搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M7PA-AAAF)
HP ノートパソコン 15-fd 15.6インチ インテル Core Ultra 5 125H メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 WPS Office搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M7PA-AAAF)
¥134,377

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥1,880
2
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,890
3
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
¥980
4
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
5
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
6
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
¥5,280
7
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥980
8
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
¥5,545
9
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
¥1,980
10
バッファロー USBメモリ 32GB USB3.2(Gen1)/3.1(Gen 1)/3.0/2.0 充実サポート RUF3-K32GA-BK/N
バッファロー USBメモリ 32GB USB3.2(Gen1)/3.1(Gen 1)/3.0/2.0 充実サポート RUF3-K32GA-BK/N
¥880

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン