Perché le versioni successive di Windows continuano a utilizzare i file di scelta rapida anziché i collegamenti simbolici?


68

Windows XP e versioni successive supportano collegamenti simbolici. Tuttavia, Windows continua a utilizzare i file di scelta rapida (che essenzialmente memorizzano la posizione del file collegato come testo). Perché?


25
Perché le nuove versioni di Windows (e Office) salvano i file di testo in formato ANSI e non UTF-8? O per perpetrare incompatibilità e irragionevolezza o per supportare sistemi legacy ...
retrografia

9
Windows XP e successivi supportano simbolici su alcuni filesystem. I collegamenti simbolici funzionano su un file system NTFS sul disco rigido, ma non funzionano se copiati su una normale chiavetta USB formattata FAT 32 o su un CD-ROM in formato UDF e potrebbero non funzionare se copiati su un server di rete (come spesso non conoscono il sistema operativo o il file system utilizzato dal server remoto). I file di scelta rapida LNK possono essere copiati felicemente e funzionare su tutti questi.
GAThrawn

12
I .lnkfile di Windows sono più simili ai .desktopfile di Linux che ai link simbolici.
Arturo Torres Sánchez,

3
I collegamenti simbolici sono complicati dal punto di vista della sicurezza (confuso problema con il vice)
CodesInChaos

2
Quindi, hai smesso di usare i segnalibri nel tuo browser quando è arrivato NTFS? Può sembrare un confronto assurdo, ma solo se pensi che le scorciatoie non siano altro che puntatori a file - semplicemente non è così.
Luaan,

Risposte:


106

Un certo numero di ragioni, immagino

  1. È possibile memorizzare diversi livelli di compatibilità con diverse scorciatoie nello stesso EXE come interpretati dalla shell, piuttosto che dal file system.
  2. Alcuni collegamenti rapidi non esistono effettivamente sul file system. Alcuni di essi sono semplicemente riferimenti a GUID o stringhe speciali interpretate dalla shell.
  3. Non è possibile includere opzioni in un collegamento simbolico. Puoi indicare EXE, certo, ma non puoi dire a EXE ulteriori argomenti.
  4. Non puoi scegliere un'icona per un collegamento simbolico.
  5. Non puoi scegliere da quale directory lavorare in un collegamento simbolico.
  6. I file di scelta rapida non devono solo puntare a file, possono essere collegamenti ipertestuali o collegamenti di protocollo (nel caso di un file .URL).
  7. I file LNK possono esistere su qualsiasi file system. I collegamenti simbolici sono gestiti dal file system stesso, nel caso di Windows, NTFS.
  8. Non è necessario sostituirli. Funzionano, sono minuscoli, possono essere ingranditi in futuro in caso ci fosse bisogno di aggiungere più funzionalità rispetto a quelle sopra elencate.
  9. Per creare un collegamento simbolico sono necessari diritti amministrativi (per una buona ragione, altrimenti il ​​reindirizzamento di file innocenti su file dannosi può essere eseguito con pochissimo lavoro)

Ci saranno più motivi di questo, ma penso che sia abbastanza per iniziare :) - C'è un link fornito da @grawity qui che fornirà ulteriori letture su parti di questo argomento.


2
Inoltre, i collegamenti ai file memorizzano nella cache determinati metadati sulla destinazione e, se interpretati a livello di shell, consentono ai collegamenti di essere aggiornati dalla shell se la destinazione è stata spostata, il che sarebbe più difficile con i collegamenti simbolici. In generale, vedi di nuovo Old New Thing per varie cose interessanti sulle funzionalità di scelta rapida.
gravità

5
@grawity Ci sarebbe comunque un grande vantaggio nel farli gestire al file system? Avrei pensato che i file .lnk avessero uno spazio infinito per espandersi per ulteriori funzionalità, se necessario, pur mantenendo la retrocompatibilità, e non hanno molto sovraccarico per loro. Spostare questo nel file system sarebbe un po 'troppo ingegnerizzato, forse? Non sono affatto un esperto del funzionamento interno dei file system.
Jonno,

3
È vero, lo stesso FS non avrebbe alcuna utilità per la maggior parte di queste informazioni: molte funzionalità .lnk sono specifiche di Explorer, quindi archiviare tutto come un punto di analisi anziché un file sarebbe eccessivo.
gravità

3
Volevo solo sottolineare che, per quanto ne so, i file LNK non possono essere utilizzati per target URL (collegamenti ipertestuali). È possibile utilizzare la stessa funzione di creazione di collegamenti in Windows per creare un collegamento a un URL, ma il risultato finale è un file .URL (che è un testo semplice, essenzialmente un file INI), non un file .LNK (che è binario).
Michael Becker,

3
O start http://superuser.comche sceglie il browser predefinito, come farebbe un vero collegamento a un URL. Detto questo, si potrebbe rendere i file .LNK puntano a URL. Alla fine, sono "moniker COM serializzati" e il sistema COM può essere espanso con nuovi tipi di moniker.
Saluti

6

Un collegamento simbolico non è altro che un percorso racchiuso in una quantità molto piccola di magia del filesystem. Ci sono molti modi in cui può diventare non valido ("rotto"), la maggior parte dei quali coinvolge uno o più file o directory che vengono rinominati. Poiché Windows è un software consumer, è possibile che sia presente un numero elevato di programmi progettati in modo non corretto in esecuzione su un'installazione "tipica". Di conseguenza, questo tipo di rottura è molto più difficile da evitare rispetto a un server in cui (in teoria) ogni programma che tocca il disco è una quantità nota.

Le scorciatoie sono immuni alla maggior parte delle forme di rottura poiché seguono i loro obiettivi indipendentemente dal percorso. Questo li rende più facili da usare. Sono progettati specificamente per i consumatori, con un approccio "fai solo quello che intendo e non preoccuparmi dei dettagli".

Ora, potresti usare hard link per questo (in una certa misura), ma i hard link hanno una serie di proprietà complicate che li rendono inadatti per l'uso da parte dei consumatori. In particolare, i file ottengono nuovi numeri di inode in modo del tutto troppo semplice e alcuni software di backup si rompono in modo piuttosto spettacolare se confrontati con collegamenti reali. Il primo potrebbe (forse) essere risolto con il tunneling del filesystem (che è in realtà il modo in cui le scorciatoie risolvono un problema correlato), ma il secondo è un problema molto più difficile.

(Probabilmente dovrei anche notare che la "risoluzione" dei collegamenti fisici con il tunneling è decisamente non banale poiché non si tratta solo di ricollegare metadati "persi". Gli Inodi sono legati nello schema di allocazione del disco, quindi non si può semplicemente unire arbitrariamente o riassegnarli dopo il fatto senza un bel po 'di legwork. Dato che le scorciatoie usano altri metadati che possono essere facilmente tunnelati, come il tempo di creazione, non hanno questo problema.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.