web-dev-qa-db-ja.com

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

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

68
Alex

いくつかの理由があると思います

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

これよりも多くの理由がありますが、それを始めるのに十分だと思います:)-@grawityによって提供されるリンクがあります こちら このトピックの一部についてさらに読む。

106
Jonno

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

ショートカットは ほとんどの破損に影響されない です。パスとは無関係にターゲットを追跡するためです。これにより、ユーザーが使いやすくなります。これらは特に「私が言っていることを実行し、詳細については気にしない」というアプローチで、消費者向けに特別に設計されています。

これで、ハードリンクを(ある程度)使用できますが、ハードリンクには多数の 複雑なプロパティ があり、ユーザーの使用には適していません。特に、ファイルが新しいiノード番号を取得するのは非常に簡単であり、一部のバックアップソフトウェアはハードリンクに直面すると、見事に壊れます。前者は(おそらく) ファイルシステムトンネリング で解決できます(実際、ショートカットが関連する問題を解決する方法です)が、後者ははるかに難しい問題です。

(また、トンネリングによるハードリンクの「解決」は、「失われた」メタデータを再接続するだけの問題ではないため、明らかに重要なことです。iノードはディスク割り当てスキームにバインドされているため、任意にマージすることはできません。または、かなりの労力を費やすことなく、事実の後でそれらを再割り当てします。ショートカットは、作成時間など、簡単にトンネルできる他のメタデータを使用するため、この問題はありません)。

6
Kevin