Mengapa versi Windows yang lebih baru terus menggunakan file pintas alih-alih tautan simbolis?

68

Windows XP dan yang lebih baru mendukung tautan simbolik. Namun, Windows terus menggunakan file pintasan (yang pada dasarnya menyimpan lokasi file yang ditautkan sebagai teks). Mengapa?

Alex
sumber
25
Mengapa Windows versi baru (dan Office) menyimpan file teks dalam format ANSI dan bukan UTF-8? Entah untuk melakukan ketidakcocokan dan tidak masuk akal atau untuk mendukung sistem warisan ...
retrography
9
Windows XP dan yang lebih baru mendukung simbol pada sistem file tertentu. Tautan simbolis berfungsi pada sistem file NTFS pada hard disk Anda, tetapi tidak berfungsi jika disalin ke stik USB berformat FAT 32 yang normal, atau CD-ROM berformat UDF, dan mungkin tidak berfungsi jika disalin ke server jaringan (seperti Anda sering tidak tahu OS atau sistem file yang digunakan oleh server jauh). File pintas LNK dapat dengan mudah disalin dan bekerja di semua itu.
GAThrawn
12
.lnkFile Windows lebih mirip dengan .desktopfile Linux daripada symlink.
Arturo Torres Sánchez
3
Symlinks adalah keamanan bijaksana yang rumit (masalah wakil bingung)
CodesInChaos
2
Jadi, apakah Anda berhenti menggunakan bookmark di browser Anda ketika NTFS muncul? Ini mungkin terdengar seperti perbandingan yang tidak masuk akal, tetapi hanya jika Anda berpikir bahwa cara pintas tidak lain adalah pointer ke file - yang sebenarnya tidak terjadi.
Luaan

Jawaban:

106

Sejumlah alasan, kurasa

  1. Anda dapat menyimpan berbagai tingkat kompatibilitas terhadap beberapa pintasan berbeda ke EXE yang sama seperti yang ditafsirkan oleh shell, alih-alih sistem file.
  2. Tautan pintasan tertentu sebenarnya tidak ada di sistem file. Beberapa dari mereka hanya referensi ke GUID, atau string khusus yang ditafsirkan oleh shell.
  3. Anda tidak dapat menyertakan sakelar di symlink. Anda dapat menunjuk ke EXE, tentu saja, tetapi Anda tidak dapat mengatakan bahwa EXE ada argumen lebih lanjut.
  4. Anda tidak dapat memilih ikon untuk symlink.
  5. Anda tidak dapat memilih direktori tempat bekerja di symlink.
  6. File pintasan tidak hanya harus mengarah ke file, mereka bisa berupa hyperlink atau tautan protokol (Dalam kasus file .URL).
  7. File LNK dapat ada di sistem file apa pun. Symlink ditangani oleh sistem file itu sendiri, dalam kasus Windows, NTFS.
  8. Tidak ada kebutuhan nyata untuk menggantinya. Mereka bekerja, mereka kecil, mereka dapat ditingkatkan di masa depan jika ada kebutuhan untuk lebih banyak fungsionalitas yang ditambahkan kepada mereka daripada yang tercantum di atas.
  9. Hak administratif diperlukan untuk membuat symlink (Untuk alasan yang baik - jika tidak pengalihan file yang tidak bersalah ke file berbahaya dapat dieksekusi dengan sangat sedikit pekerjaan)

Akan ada lebih banyak alasan daripada ini, tetapi saya pikir itu sudah cukup untuk Anda mulai :) - Ada tautan yang disediakan oleh @grawity di sini yang akan memberikan bacaan lebih lanjut tentang bagian-bagian dari topik ini.

Jonno
sumber
2
Selain itu, pintasan file cache metadata tertentu tentang target, dan ditafsirkan pada tingkat shell memungkinkan pintasan diperbarui oleh shell jika target telah dipindahkan, yang akan lebih sulit dengan symlink. Secara umum, lihat Old New Thing lagi untuk berbagai hal menarik tentang fitur pintasan.
grawity
5
@grawity Akankah ada manfaat besar untuk memindahkan ini agar ditangani oleh sistem file? Saya akan berpikir file .lnk memiliki ruang tak terbatas untuk memperluas fungsionalitas lebih lanjut jika diperlukan, sementara masih mempertahankan kompatibilitas ke belakang, dan mereka tidak punya banyak overhead untuk itu. Memindahkan ini ke sistem file akan menjadi sedikit over-engineered, mungkin? Saya tidak berarti seorang ahli dalam cara kerja sistem file, meskipun.
Jonno
3
Benar, FS itu sendiri tidak akan menggunakan sebagian besar informasi ini - banyak fitur .lnk benar-benar khusus untuk Explorer, jadi menyimpan segala sesuatu sebagai titik reparse alih-alih suatu file akan membutuhkan banyak pembunuhan.
grawity
3
Hanya ingin menunjukkan, file LNK, sejauh yang saya tahu, tidak dapat digunakan untuk menargetkan URL (hyperlink). Anda dapat menggunakan fasilitas pembuatan pintasan yang sama di Windows untuk membuat pintasan ke URL, tetapi hasil akhirnya adalah file .URL (yang merupakan teks biasa, pada dasarnya file INI), bukan file .LNK (yang merupakan biner).
Michael Becker
3
Atau start http://superuser.comyang memilih peramban default, seperti pintasan sejati ke URL. Yang mengatakan, Anda bisa membuat file .LNK menunjuk ke URL. Pada akhirnya, mereka adalah "serial monikers COM", dan sistem COM dapat diperluas dengan tipe moniker baru.
MSalters
6

Sebuah symlink tidak lebih dari sebuah path yang dibungkus dengan sejumlah kecil keajaiban sistem file. Ada sejumlah cara yang bisa menjadi tidak valid ("rusak"), yang sebagian besar melibatkan satu atau lebih file atau direktori yang diganti namanya. Karena Windows adalah perangkat lunak konsumen, Anda mungkin memiliki sejumlah besar program yang dirancang sangat buruk berjalan pada instalasi "khas". Akibatnya, kerusakan seperti ini jauh lebih sulit untuk dihindari daripada pada server di mana (secara teori) setiap program yang menyentuh disk adalah jumlah yang diketahui.

Jalan pintas kebal terhadap sebagian besar bentuk kerusakan karena mereka melacak target mereka secara independen dari jalur. Ini membuat mereka lebih ramah pengguna. Mereka secara khusus dirancang untuk konsumen, dengan pendekatan "lakukan saja apa yang saya maksud dan jangan ganggu saya tentang detail".

Sekarang, Anda dapat menggunakan tautan keras untuk itu (sampai batas tertentu), tetapi tautan keras memiliki sejumlah properti rumit yang membuatnya tidak cocok untuk penggunaan konsumen. Secara khusus, file mendapatkan nomor inode baru sepenuhnya terlalu mudah dan beberapa perangkat lunak cadangan rusak secara spektakuler ketika dihadapkan dengan tautan keras. Yang pertama bisa (mungkin) diselesaikan dengan tunnel sistem file (yang sebenarnya cara pintas memecahkan masalah terkait), tetapi yang terakhir adalah masalah yang jauh lebih sulit.

(Saya mungkin juga harus mencatat bahwa "menyelesaikan" hubungan keras dengan tunneling jelas tidak trivial karena itu bukan hanya masalah pemasangan kembali metadata yang "hilang." atau menugaskan mereka setelah fakta tanpa sedikit kerja keras. Karena pintasan menggunakan metadata lain yang dapat dengan mudah diteruskan, seperti waktu pembuatan, mereka tidak memiliki masalah ini.)

Kevin
sumber