windows – シンボリックリンクとショートカットの違いは何ですか?

shortcuts symbolic-link windows

シンボリックリンクとショートカットの違いは何ですか?

  87  deepthi tm  2011-03-06


ベストアンサー

重要なポイントは、ショートカットは単なるファイルであるということだと思います。それらにはサイズがあり(小さなもので、それらが指す場所を参照するだけのもの)、使用するためには、そのファイルタイプをサポートするアプリケーションが必要になります

シンボリックリンクはファイルシステムレベルのものであり、すべてのものがそれを元のファイルとして見ています。アプリケーションはシンボリックリンクを使用するために特別なサポートを必要としません

64  Phoshi  2011-03-06


シンボリックリンク」は、実際にはディレクトリやファイルの代わりに機能的に機能することができ、Unix/Linux環境で一般的に使用されています。Windowsではサポートされているようですが、実際に使っているところはまだ見たことがありません

ショートカット」とは、表示されるアイコンのような他のものと一緒に、目的のファイルやディレクトリへの参照を持つ通常のファイルのことです。シンボリックリンクとは異なり、DOSでは “cd ./shortcut-name “はできません(Unix/Linuxでは “cd ./symlink-name “を実行すれば、実際のサブディレクトリと同じように動作します)

また、ほとんどのWindowsアプリケーションでは、File->Open GUIダイアログでショートカットをクリックすると、ファイル名フィールドにショートカットのファイル名が入力され、サブディレクトリのように動作しますが、Unix/LinuxではGUIは(ファイル名フィールドを変更せずに)シンボリックリンクをパスとして扱います

23  Randolf Richardson  2011-03-06


他の人が言っているように、シンボリックリンクはファイルシステムレベルで利用可能なリンクの種類の一つで、アプリケーションからは透過的になります。私はこのドキュメントをとても参考にしました (特に “Crop/Unroll/Splice Outer Junctions/Symbolic Links “セクション)。そして、そこにあるツールもいい感じです。(これとmklinkに言及することで、より多くの検索者がこの議論を見つけてくれることを期待しています)

ショートカットはファイルであり、実際のリンクではなく、一般的にはWindowsのUI(ユーザーインターフェイス)で解釈された場合にのみ、リンクとして正常に追従します。たとえば、フォルダのショートカットをダブルクリックすると、Windows は別の場所にリダイレクトします。(これには、ほとんどのアプリケーションが呼び出す一般的なファイルを開くダイアログやファイルを保存するダイアログも含まれます)。私のデスクトップには、このフォルダへのショートカットがあります

ショートカットのファイル名はC:\Usersersuser5Des\ktop\\Games.lnk となっていますが、Windows は .lnk の拡張子を抑制し、「既知のファイルタイプのための拡張子を隠す」のチェックを外しても、「Games」とだけ表示します。でも、コマンドプロンプトを開いてdirを実行すると、それが表示されます

C:\Users\user5\Desktop>dir "g*"
Volume in drive C has no label.
Volume Serial Number is 900...
Directory of C:\Users\user5\Desktop
03/08/2014  05:30 PM             1,710 Games.lnk
1 File(s)          1,710 bytes
0 Dir(s)  246,818,222,080 bytes free

シンボリックリンクと同等のものを作るには、\Dオプション(ディレクトリ用)を使うと良いと思います

C:\Users\user5\Desktop>mklink /D mysymlink  "C:\ProgramData\Microsoft\Windows\S
tart Menu\Programs\G"
symbolic link created for mysymlink <<===>> C:\ProgramData\Microsoft\Windows\Sta
rt Menu\Programs\G

C:\Users\user5\Desktop>cd mysymlink

C:\Users\user5\Desktop\mysymlink>

(これはフォルダリンクなので、ディレクトリジャンクション(A directory junction (A J)もオプションです)。Windows エクスプローラは、このコンソールやほとんどのアプリケーションのように、(a) 別の場所への “横断 “リダイレクトや (b) 失敗するのではなく、この見かけ上のサブディレクトリを “下に “ブラウズさせてくれます

ショートカットはサブディレクトリのような挙動をしません。このコマンドでWindows UIのデフォルトのファイル動作を呼び出すことができます(これはWindowsエクスプローラで “G “フォルダを開きます)

C:\Users\user5\Desktop>"Games.lnk"

一方、mysymlink は真のサブディレクトリとしてリストアップされており (カウントを参照)、そのような方法では起動することができません

C:\Users\user5\Desktop>dir "my*"
Volume in drive C has no label.
Volume Serial Number is 900...

Directory of C:\Users\user5\Desktop

03/29/2014  06:08 PM    <DIR>          mysubdir
03/29/2014  05:40 PM    <SYMLINKD>     mysymlink [C:\ProgramData\Microsoft\Windo
ws\Start Menu\Programs\G]
0 File(s)              0 bytes
2 Dir(s)  246,816,153,600 bytes free

C:\Users\user57\Desktop>mysubdir
'mysubdir' is not recognized as an internal or external command,
operable program or batch file.

C:\Users\user57\Desktop>mysymlink
'mysymlink' is not recognized as an internal or external command,
operable program or batch file.

逆に言えば、ディレクトリをショートカットに変更することはできません

C:\Users\user5\Desktop>cd "Games.lnk"
The directory name is invalid.

Windows の UI では、右クリックしてショートカットのプロパティを編集することができます。または、以下は実際に .lnk ファイルに格納されている内容(バイナリデータ)を正確に示していますが、16 進数エディタの方が表示は良いでしょう

C:\Users\user5\Desktop>notepad.exe "Games.lnk"

実際のサブフォルダ上でメモ帳を実行しようとすると、「アクセスが拒否されました」というエラーメッセージと空のメモ帳がポップアップ表示されるのに対し、メモ帳を実行しようとすると「アクセスが拒否されました」というエラーメッセージと空のメモ帳がポップアップ表示されます

逆に、ファイルのシンボリックリンク(フォルダのシンボリックリンクではなく)を作れば、メモ帳で起動できます。以下のnotepad.exeの呼び出しのうち、最初の2つは動作し、3つ目は失敗します(.LNKファイルというバイナリのgobbledegookを開きます)

C:\Users\user5\Desktop>mklink symplain.txt plain.txt
symbolic link created for symplain.txt <<===>> plain.txt

C:\Users\user5\Desktop>notepad.exe "symplain.txt"

C:\Users\user5\Desktop>notepad.exe "plain.txt"

C:\Users\user5\Desktop>notepad.exe "plain.txt.lnk"

これはコンソールだけの問題ではありません。メモ帳のショートカットをデスクトップにコピーして、その上に3つのショートカットをドラッグ&ドロップしてみたところ、全く同じ動作をしました。(ドラッグ&ドロップはダブルクリックと違って、アプリケーションにショートカットを解釈させるからです)

ディレクトリシンボリックリンクとジャンクションの違いについては、この議論を参照してください

“Windows がシンボリックリンクとディレクトリジャンクションを解決する方法の大きな違いは、処理が行われる場所にあります。Windows は、シンボリック リンクがリモート ファイル サーバー上の場所を参照している場合でも、ローカル システム上で処理します。Windows は、リモート ファイル サーバーを参照するディレクトリ ジャンクションをサーバー自体で処理します。そのため、サーバー上のシンボリック リンクは、他のクライアント ボリュームのようにクライアントからのみアクセス可能な場所を参照することができますが、ディレクトリ ジャンクションは参照することができません。これに対処するために、Windows Vista では、ファイルとディレクトリの両方に対して新しいシンボリック リンク タイプがサポートされています

“シンボリックリンクの意味合いを理解するために、多くのファイルシステムコマンドが更新されました。例えば、Delete コマンドは、リンクをたどると対象が削除されてしまうのではなく、代わりにリンクを削除することを知っています。しかし、すべてのアプリケーションがシンボリックリンクを正しく扱うとは限らないため、シンボリックリンクを作成するには、デフォルトでは管理者のみが持っている新しいシンボリックリンクの作成権限が必要です。”

13  Jon Coombs  2014-03-29


“シンボリックリンクは、ショートカット(.lnk)では、何かがショートカットファイルの内容を読み込んで解釈し、それが参照するファイルを開かなければならないという点で、ショートカットとは異なります(すなわち、それは2段階のプロセスです)。アプリケーションがシンボリックリンクを使用すると、シンボリックリンクによって参照されるデータオブジェクトへの即時アクセスを得ることができます(すなわち、それは1ステップのプロセスです)

ソースは以下の通りです。http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html

3  ariefcfa  2018-04-27


時々、機能的な例を持っているのは良いことです

ファイルのバックアップにはgoogleドライブを使っているのですが、特定のフォルダにファイルをバックアップしたい時があります(…/googleドライブに移動できない)。特にwindows10のユニバーサルアプリでは、設定ファイルなどはappdataに保存されていて、ほとんどの場合、この場所を変更することができません

私はWindowsネイティブのstikynotアプリを使用していて、私は私のノートをバックアップしたかったので、私はここでシンボリックリンクを使用しています。Google ドライブはリンクを実際のファイルとして認識し、実際のファイルが appdata フォルダにある間、ファイルを同期します

クラウドに同期したくないプロジェクトフォルダのようなファイルをローカルに持っている場合は、ショートカット(コピー、ペースト、貼り付けショートカット)を使用しています

0  sommmen  2018-03-26


タイトルとURLをコピーしました