Windows の「ファイル名を指定して実行」とは、なんか色んなことができる Windows コンポーネントである。
今はその理解で問題ない。本記事を最後まで読んでいただければ、”ファイル名を指定して実行の実体” が見えてくるだろう。
本記事の最終目標は、その実体を把握したうえで、「ファイル名を指定して実行」から任意のファイル(アプリケーション)を実行することだ。
Contents
ファイル名を指定して実行とは
「ファイル名を指定して実行」とは、読んで字のごとく “ファイル名” を “指定” して “実行” できるコンポーネントだ。
例えば、「mspaint」と入力しエンターを押せば “ペイント” が起動する。「C:¥Sample.txt」と入力しエンターを押せばCドライブにある “Sample.txt” というファイルを開く(実行する)ことができる。
もし、「ファイル名を指定して実行」のイメージが湧かないのであれば、まずは下記のリンク先の記事に目を通してほしい。当該記事には「ファイル名を指定して実行」で、実際にアプリケーションを起動させる方法が記載されている。
「ファイル名を指定して実行」で実現できること
実際のところ「ファイル名を指定して実行」で実現できるのはアプリケーションの起動だけではない。
例えば「C:」もしくは「¥」と入力すればエクスプローラーでCドライブを開くことができるし、「explorer」と入力しエンターを押せば “エクスプローラー” そのものを起動することができる。「http://turningp.jp」と入力すれば、ブラウザが自動で立ち上がり当該URLにアクセスすることもできる。
「nslookup」や「shutdown -s -t 0」(実行すると即座にシャットダウンが開始するので注意)といったコマンドめいたものも受け付けてくれる。
まさに色んなことができるわけだが、アプリケーションの起動にはパスが不要なのに対し、ファイルを開く場合はファイルのパス+ファイル名が必要なのはなぜだろうか。
上記で言うところの、ペイントは「mspaint」で起動されるのに、Cドライブにある “Sample.txt” はなぜ「C:¥Sample.txt」でなくてはならないのか。
同様に、「mspaint」でメモ帳が起動するのに「minecraft」でマインクラフトが起動しないのはなぜなのか。理由はもちろんある。
パスが不要なのは “System32” フォルダに入っているから
誤解を恐れずにシンプルに表現すると、「ファイル名を指定して実行」にアプリケーション名を入力するだけで起動できる理由は、System32 フォルダ内に実行ファイル(もしくは実行ファイルのショートカット)があるからだ。
System32 フォルダの中を見てみると、以前の記事で紹介した、ペイントを開く「mspaint」やメモ帳を開く「notepad」などが存在していることがわかる。
また、便宜的に “アプリケーション名” と上述したが、下図を見てわかるように、「ファイル名を指定して実行」で指定していた値というのは “System32 フォルダ内のファイル名” である。
「ファイル名を指定して実行」でコマンドが実行できる理由
“コマンドめいたものも実行できる” ことについてだが、実行できる理由は単純で、いわゆる “コマンド” が実行ファイルとして System32 に存在するからだ。
このように、「コマンドプロンプト」で実行していたような、”コマンド” と呼ばれるものも、実体は実行ファイルでしかない。
実行ファイルである以上、「ファイル名を指定して実行」で実行できるのも理解していただけるだろう。ただ、「ファイル名を指定して実行」にはコマンドプロンプトのような標準出力がないので、結果を見ることはできない。
Internet Explorer をファイル名を指定して実行で開くには
話をまとめると、任意のアプリケーションを「ファイル名を指定して実行」から起動したければ「C:¥Windows¥System32」内に実行ファイルを置けばいい。
例えば、何も作業を行わない状態で「ie」と入力しても、ファイル名を指定して実行はアプリケーションの起動に失敗する。System32 フォルダ内に “ie” という実行ファイルは存在しないので当然だ。
IE の実行ファイルのショートカットを System32 に置く
上記で失敗したのは System32 に「ie」という名前の実行ファイルが存在しなかったからだ。ならば、実行ファイル「ie」を置けばいい。
Windows10 の場合、Internet Explorer の実行ファイルは「C:¥Program Files¥internet explorer」フォルダにある。ファイル名は「iexplore.exe」だ。
iexplore.exe のショートカットを作成し、System32 フォルダ内に配置する。
ファイル名を変更する
System32 フォルダに配置した IE のショートカットだが、デフォルトだと “iexplore – ショートカット” というファイル名になる。
なので、ファイル名を「ie」に変更する。
ファイル アクセスの拒否
環境によっては下図のように「このファイルの名前を変更するには管理者の権限が必要です」と出力される場合がある。その場合は「続行」をクリックする。
「続行」をクリックすると「このアプリがデバイスに変更を加えることを許可しますか?」と出力される場合もあるので、その場合は「はい」をクリックする。
ファイル名を指定して実行で IE を起動する
「ファイル名を指定して実行」で「ie」と入力し「OK」をクリックする。
無事に Internet Explorer 起動することができた。
Web サイトを直接起動する
「ファイル名を指定して実行」で任意の Web ページに即座にアクセスすることも可能だ。
その為には Web サイトのショートカットリンクを作成し、System32 フォルダに配置する必要がある。
Web サイトのショートカットを作成する
まずは Web サイトのショートカットを作成する。デスクトップを右クリックし、「新規作成」から「ショートカット」をクリックする。
“項目の場所を入力してください” と書かれたボックスに、「”ブラウザの実行ファイル名(フルパス)” URL」を入力する。
例えば ブラウザに Internet Explorer を使用し、リンクを “turningp.jp” にしたいのであれば「”C:¥Program Files¥internet explorer¥iexplore.exe” http://turningp.jp」と入力し、「次へ」をクリックする。
ショートカットのファイル名を入力し「完了」をクリックする。
上記の手順で “turningp.jp” のショートカットリンクが作成されるので、System32 フォルダに配置する。
「ファイル名を指定して実行」でファイル名を入力しOKをクリックすることで、当該URLのサイトへ即座にアクセスすることが可能になる。
なお、大文字と小文字は区別されない。
注意点:ファイル名にスペースを含める場合
例えば以下のように、System32 フォルダ内のショートカット名を「TURNING POINT」とする。
この場合、ファイル名に半角スペースが含まれることになる。スペースを含んだファイルを「ファイル名を指定して実行」で実行するには工夫が必要だ。つまり、普通に入力しても失敗する。
実際に試してみよう。「TURNING POINT」と入力し「OK」をクリックする。
すると、「’TURNING’ が見つかりません。」と出力される。半角スペースでコマンドが区切られ、半角スペースまでの文字がファイル名として認識されていることがわかる。
ファイル名にスペースを含む場合、下図のようにダブルクオーテーション(” “)でファイル名を囲う必要がある。
そうすると、文字全体が一つのファイル名として認識されるので無事にショートカットを実行することができる。
ただ、言わずもがな、ファイル名にはスペースを含めない方がいい。
System32 フォルダを汚したくない場合
人によっては「System32 フォルダ内にファイルを置きたくない」という意見もあるだろう。
System32 フォルダは Windows OS を構成するうえで非常に重要なフォルダなので、そういった声が上がるのも当然だ。なにより、自分で置いた実行ファイルがどれなのかが分かりづらくて面倒だ。
設定が必要になるが、System32 フォルダ以外のファイルを直接起動することも可能なので、その方法を以下に記す。
任意の場所にフォルダを作成する
まずはお好みの場所にお好みのフォルダ名でフォルダを作成する。
Windows にはユーザごとに「Documents and Settings」というドキュメントや設定情報を格納する領域が用意されているので、本記事ではその中にフォルダを作成する。
上図のとおり実行すると(”User01″ はユーザ名を入力)「Documents and Settings」フォルダが開く。
「ShortCut」というフォルダを作成してみた。
その「ShortCut」フォルダの中に先ほど作成した “turningp.jp” を開くショートカットを配置する。
Documents and Settings
“Documents and Settings” と言われると聞きなれないフォルダのように感じるかもしれないが、実は「C:¥Users¥ユーザ名」フォルダのことだ。
上図のように、”Documents and Settings” に作成した ShortCut という名前のフォルダが “C:¥Users¥ユーザ名” にも存在する。
なぜ、”Documents and Settings” という隠しフォルダが存在しているのかというと、下位互換性のためだ。
”Documents and Settings” や “C:¥Users¥ユーザ名” フォルダ内にあるファイルは、ユーザの個別情報=ユーザプロファイルと呼ばれるものだ。
ユーザプロファイルは、Windows XP、Windows Server 2003 R2 まで ”Documents and Settings” フォルダに存在していた。
しかし、Windows Vista、Windows Server 2008 以降から “C:¥Users¥ユーザ名” フォルダに保存されるようになったのだ。
Windows XP にしか対応していないアプリケーションはユーザプロファイルを ”Documents and Settings” に参照しにいくため、下位互換性を保つために、「C:¥Documents and Settings」が「C:¥Users」に対応するようにジャンクションとして設定されている。
※ジャンクション…別フォルダに対するリンクのようなもの。
環境変数の編集
任意のフォルダを作成した後は、System32 フォルダのようにファイル名だけで実行するためのパスを通さなくてはならない。
設定は「システムのプロパティ」から行うので、ファイル名を指定して実行で「sysdm.cpl」を入力しOKをクリックする。
システムのプロパティの「環境変数」タブを開く。
環境変数タブの「環境変数」をクリックする。
ユーザー環境変数の「Path」を選択し「編集」をクリックする。
「新規」をクリックする。
作成したフォルダのパスを入力し、「OK」をクリックする。
環境変数ウィンドウに戻るので「OK」をクリックする。
OSによっては注意が必要
例えば Windows10 の場合だと、デフォルトで環境変数「Path」が存在する。(逆に言うと、デフォルトで Path が存在しない OS のバージョンもある)
その状況で「編集」ではなく「新規」を選択してみる。
変数名に「Path」と入力し、変数値に作成したフォルダのパスを入力する。
そうすると、元々あったユーザー環境変数「Path」が上書きされてしまう。
“Path” を新規作成するのはあくまでデフォルトで “Path” が存在しない場合のみだ。
ファイル名を指定して実行
環境変数設定後にファイル名を指定して実行でファイル名を入力し、OKをクリックする。
任意のフォルダに配置したファイルを実行することができるようになる。
まとめ
- 環境変数の設定がしたくない&単一ユーザであれば System32 に直接ファイルを置くのが楽
- 複数ユーザ or System32 を汚したくない場合は任意のフォルダを作成し環境変数でパスを通す
- System32 にあれこれ置くのも後が面倒くさいので、個人的には後者がお勧め