ファイル名を指定して実行に「.」を入れるとユーザープロファイルフォルダが開くのは「「.」を入れるとユーザーフォルダーを開く機能」が実装されているからではない

また阿久津か。

news.mynavi.jp

 

ファイル名を指定して実行の役割

ファイル名を指定して実行に入力するパターンとしては主に4つあると思う。だって公式説明文からして4つだからね。

f:id:hahihahi:20210102194219p:plain
全部実際には関連付けによる起動だろとか言わない。

実行ファイルを指定して実行

みんなの入力履歴にもregeditって入っているだろう?

非実行ファイルを指定して実行

たとえばC:\Windows\WindowsUpdate.logって入れてOK押せば関連付けに従ってメモ帳が起動するだろう?

フォルダを指定して実行

たとえばC:\Windows\System32って入れてOK押せばC:\Windows\System32が新しいウインドウで表示されただろう?

URLを指定して実行

たとえばhttps://example.com/って入れてOK押せばWebブラウザが起動しただろう?

 . とは?

じゃあ"."ってなんだよって話に戻ろう。"."はカレントディレクトリ(フォルダ)だ、ほかの何物でもない。

フォルダを指定しているんだから指定したフォルダが開いているだけ。ただそれだけ。

Windowsのバージョンで変わったのはファイル名を指定して実行を行ったときのカレントディレクトリ。

news.mynavi.jp

相対パスにおけるピリオドはカレントフォルダー(現在のフォルダー)を示す記号だが、Explorer.exeの内部処理では異なるようである。 

 異ならねえよ。まぎれもなくフォルダを指定してんだよお前は。

なお、エクスプローラーのアドレスバーは本手順に対応していない。

今表示してる場所がカレントになるからだよ。カレントの意味を英和辞書で調べろ。

こいつがダメなところは".."(カレントディレクトリの親ディレクトリ)を指定して実行してみなかったり、カレントディレクトリがすぐ分かるcmd.exeやcommand.comを実行してみなかったこと。

f:id:hahihahi:20210102195804p:plain

f:id:hahihahi:20210102195823p:plain

ちなみにWindows 2000でデフォルトカレントディレクトリが変わったのはService Pack 4より後なんだけどみんな覚えているかな?スタートメニューの作業フォルダが設定されていないコマンドプロンプトの起動時のカレントディレクトリが突然変わったのを覚えている。

f:id:hahihahi:20210103122032p:plain

f:id:hahihahi:20210103122049p:plain

Service Pack 4 + KB891861(Update Rollup 1)

f:id:hahihahi:20210103122134p:plain

f:id:hahihahi:20210103123900p:plain

f:id:hahihahi:20210103123918p:plain

まとめ

結論ありきの調査をして反例をスルーする奴は何やってもダメ。

LargeSystemCacheをプログラム起動用メモリを解放なんて法螺を吹いたのも阿久津だぞ忘れるな。

おまけ

へー。「.」で現ユーザーフォルダ、「..」で一階層上のユーザー一覧フォルダが開くんだ。それ以上はいくら増やしても現ユーザーフォルダが開く。 - Hasta_luego のブックマーク / はてなブックマーク

"."はカレントディレクトリ、".."はカレントディレクトリの親ディレクトリだけど"..."は特別なものではないのでカレントディレクトリ内の"..."というパスになるからね。

そして相対パス絶対パスに変換された後、末端の連続する"."は取り除かれるので最終的にユーザーフォルダを指すパスが残ることになる。