Windows の新しいバージョンでは、シンボリック リンクの代わりにショートカット ファイルが引き続き使用されるのはなぜですか?

Windows の新しいバージョンでは、シンボリック リンクの代わりにショートカット ファイルが引き続き使用されるのはなぜですか?

Windows XP 以降ではシンボリック リンクがサポートされています。しかし、Windows ではショートカット ファイル (リンクされたファイルの場所をテキストとして保存するファイル) が引き続き使用されています。なぜでしょうか。

答え1

理由はいくつかあると思う

  1. ファイル システムではなくシェルによって解釈されるため、同じ EXE への複数の異なるショートカットに対して、異なるレベルの互換性を保存できます。
  2. 特定のショートカット リンクは、実際にはファイル システム上に存在しません。ショートカット リンクの一部は、単に GUID への参照、またはシェルによって解釈される特殊な文字列です。
  3. シンボリックリンクにスイッチを含めることはできません。EXE を指定することはできますが、EXE にそれ以上の引数を渡すことはできません。
  4. シンボリックリンクのアイコンを選択することはできません。
  5. シンボリックリンクではどのディレクトリから作業するかを選択することはできません。
  6. ショートカット ファイルは、単にファイルを指すだけでなく、ハイパーリンクやプロトコル リンク (.URL ファイルの場合) にすることもできます。
  7. LNK ファイルはどのファイル システムにも存在できます。シンボリック リンクはファイル システム自体によって処理されます (Windows の場合は NTFS)。
  8. これらを交換する必要はまったくありません。これらは機能し、小型で、将来、上記に挙げた機能以上の機能を追加する必要がある場合には、拡張することができます。
  9. シンボリックリンクを作成するには管理者権限が必要です (正当な理由があります。そうでないと、無害なファイルを悪意のあるファイルにリダイレクトすることがほとんど手間をかけずに実行されてしまいます)

他にも理由はあるでしょうが、始めるにはこれで十分だと思います :) - @grawity が提供したリンクがありますこここれにより、このトピックの一部についてさらに詳しく知ることができます。

答え2

シンボリックリンクは、ごくわずかなファイルシステムの魔法で包まれたパスにすぎません。シンボリックリンクが無効 (「壊れる」) になる方法は数多くありますが、そのほとんどは 1 つ以上のファイルまたはディレクトリの名前が変更されることに関係しています。Windows は消費者向けソフトウェアであるため、「標準的な」インストールでは、設計が非常に不十分なプログラムが多数実行される可能性があります。その結果、この種の破損は、(理論上) ディスクにアクセスするすべてのプログラムが既知の量であるサーバーよりも回避がはるかに困難になります。

ショートカットはほとんどの破損に対して耐性があるパスとは無関係にターゲットを追跡するため、よりユーザーフレンドリーになります。これらは特に消費者向けに設計されており、「細かいことは気にせず、ただやりたいことをやるだけ」というアプローチです。

さて、ハードリンクを(ある程度)使用することもできますが、ハードリンクにはいくつかの複雑な特性そのため、一般消費者向けとしては不向きです。特に、ファイルは新しいinode番号を簡単に取得してしまい、一部のバックアップソフトウェアはハードリンクに遭遇するとかなりひどい動作をします。前者は(おそらく)次のように解決できます。ファイルシステムトンネリング(実際、これはショートカットが関連する問題を解決する方法です) が、後者ははるかに難しい問題です。

(また、ハード リンクをトンネリングで「解決」するのは、単に「失われた」メタデータを再接続するだけの問題ではないため、決して簡単ではないことも指摘しておくべきでしょう。i ノードはディスク割り当てスキームに結び付けられているため、かなりの手間をかけずに事後に i ノードを任意に結合したり再割り当てしたりすることはできません。ショートカットは、作成時間など、簡単にトンネリングできる他のメタデータを使用するため、この問題は発生しません。)

答え3

これは古い質問だとは思いますが、Windows エクスプローラーがショートカットとシンボリックリンクをほとんど区別がつかず、完全に誤解を招くような方法で表示することに、私たちは引き続き悩まされています。

  1. アイコンを表示するエクスプローラー ビューでは、どちらも左下隅に付いたボックス内に小さな右上向きの矢印が表示されるため、ここでは区別がつかないように表示されます。

  2. エクスプローラー ツリー ビューでは、シンボリック リンク (ディレクトリ用) はノードとして表示されますが、ショートカットは表示されません。

  3. 右クリック > プロパティ ダイアログは混乱しています。シンボリック リンクの場合、このダイアログには「リンク」または「シンボリック リンク」のいずれについても言及されておらず、実際にはダイアログにはターゲット タイプ、ターゲットの場所、実際のターゲット パスに関する情報を含む「ショートカット」タブが表示されます。開始フィールドがあります (グレー表示されており、シンボリック リンクには適用されません)。

一方、実際のショートカットの場合、[全般] タブには「ファイルの種類」のショートカット (.lnk) が表示されます。また、ダイアログでは [共有] タブ (ディレクトリ用) が省略されます。

そのため、それでも何が何だかよくわからない場合は、コマンド ウィンドウに頼る必要があります。そのコマンド ウィンドウでは、dir コマンドによって、タイプ列に "" と表示されるシンボリック リンクが明確に識別され、ショートカットはファイル名に ".lnk" 拡張子が付いた通常のファイルとして表示されます。

もちろん、ショートカットの拡張子がリンクではないのに「リンク」の略語になっているというのはすでに問題です。

つまり、Windows エクスプローラーは、これら 2 つのかなり異なるものを明確に識別して区別する機能をもっと向上させることができ、どちらか一方について誤解を招くような、または完全に間違った用語を使用することは絶対にやめるべきです。

関連情報