web-dev-qa-db-fra.com

MKLINK contre Junction.exe

SysInternals a un programme junction.exe qui crée des jonctions (aka. reparse points , alias. liens symboliques) dans Windows.

Cependant, Windows est également livré avec un mklink qui semble faire la même chose.

Y a-t-il une différence significative?

J'ai tendance à croire que si SysInternals a son propre programme, ils voient une lacune dans le programme standard MKLink.

27
abelenky

Comparaison

Le programme junction de Mark Russinovich a été conçu dans un but précis: créer (et supprimer) des points de jonction. Il a été maintenu au fil des ans, mais aucune nouvelle fonctionnalité n'a été ajoutée jusqu'à présent. La dernière version a été publiée le 4 juillet 2016.

En ce qui concerne mklink, il s'agit d'une commande intégrée disponible dans Windows Vista et les versions ultérieures. Il peut créer des liens durs, des points de jonction et des liens symboliques. Une fonction de suppression spécifique n'est pas fournie; vous pouvez simplement utiliser les commandes del ou rd, selon que le lien pointe vers un fichier ou un répertoire, respectivement.


Un peu d'histoire

Avant Vista, les systèmes d’exploitation Windows ne permettaient pas de créer des points de jonction prédéfinis: vous deviez soit vous procurer un exemplaire du kit de ressources officiel , utilisez un programme tiers ou écrivez-en un vous-même.

2000

La première version de l'outil junction a été publiée. Citant le site officiel:

Windows 2000 et les versions ultérieures prennent en charge les liens symboliques de répertoire, un répertoire servant de lien symbolique vers un autre répertoire de l'ordinateur. [...]

Malheureusement, Windows ne dispose pas d'outils pour créer des jonctions. Vous devez acheter le Kit de ressources Win2K, fourni avec le programme linkd pour créer des jonctions. J'ai donc décidé d'écrire mon propre outil de création de jonction: Junction .

Source: Jonction

2005-06

La commande mklink a été introduite avec Windows Vista au début de la phase bêta.

Il était disponible depuis la sortie officielle de la Bêta 1 le 27 juillet 2005. Initialement, il ne pouvait créer que des liens symboliques et des liens solides; la possibilité de créer des points de jonction est venue plus tard avec le Community Technology Preview (CTP) publié le 19 décembre 2005.

Apparemment, la commande est passée totalement inaperçue jusqu’à quelque temps plus tard en 2006, date à laquelle elle a été révélée. Voici la première référence que j'ai pu trouver:

Vous pouvez créer un lien symbolique dans Windows Vista maintenant.

C:\test>ver

Microsoft Windows [Version 6.0.5365]

C:\test>mklink
Creates a symbolic link.

MKLINK [[/D] | [/H] | [/J]] Link Target

[...]

Source: Lien symbolique sous Windows Vista

Également:

Malcolm [MSFT] (Expert):
Q: Existe-t-il un moyen très simple de créer un lien symbolique?
A: Ouvrez CMD et tapez 'mklink'. Cet outil vous permettra de créer des jonctions, des liens durs et des liens symboliques.

Source: Transcription de conversation bêta NTFS (12 juillet 2006)


Information additionnelle

Un fichier ou un répertoire peut contenir un point d'analyse, qui est un ensemble de données définies par l'utilisateur. Le format de ces données est compris par l'application qui stocke les données et par un filtre de système de fichiers que vous installez pour interpréter les données et traiter le fichier.

Par exemple, les points d'analyse permettent d'implémenter les liens du système de fichiers NTFS et le serveur de stockage distant Microsoft (RSS).

Source: Points d'analyse

Le système de fichiers NTFS prend en charge trois types de liens de fichiers: les liens physiques, les jonctions et les liens symboliques.

Source: Liens durs et jonctions

Liens durs

Un lien physique est la représentation du système de fichiers d'un fichier dans lequel plusieurs chemins renvoient à un seul fichier du même volume. [...] Toute modification de ce fichier est immédiatement visible pour les applications qui y accèdent via les liens physiques qui le référencent. Toutefois, la taille de l'entrée de répertoire et les informations d'attribut sont mises à jour uniquement pour le lien par lequel la modification a été effectuée.

Source: Liens durs et jonctions

Jonctions

Une jonction (également appelée lien symbolique) diffère d'un lien physique en ce que les objets de stockage qu'elle référence sont des répertoires distincts, et une jonction peut relier des répertoires situés sur des volumes locaux différents sur le même ordinateur.

Source: Liens durs et jonctions

Les points de jonction peuvent uniquement être liés aux répertoires d'un volume local; Les points de jonction vers les partages distants ne sont pas pris en charge.

Source: Point de jonction NTFS

Liens symboliques

Un lien symbolique est un objet de système de fichiers qui pointe vers un autre objet de système de fichiers. L'objet sur lequel on pointe s'appelle la cible.

Les liens symboliques sont transparents pour les utilisateurs. les liens apparaissent sous forme de fichiers ou de répertoires normaux et l'utilisateur ou l'application peut agir de la même manière.

Source: Liens symboliques

[Les liens symboliques] ont été introduits avec les modifications apportées au système de fichiers NTFS avec Windows Vista , mais disponibles via les pilotes de filtre pour Windows XP .

Contrairement à un point de jonction NTFS (disponible depuis Windows 2000), un lien symbolique peut aussi pointer vers un fichier ou à distance SMB chemin réseau. Alors que les points de jonction NTFS prennent en charge uniquement les chemins absolus sur les lecteurs locaux, les liens symboliques NTFS permettent la liaison à l'aide de chemins relatifs.

Les paramètres de sécurité par défaut de Windows Vista/ Windows 7 interdisent aux administrateurs non élevés et à tous les non-administrateurs de créer des liens symboliques.

Source: lien symbolique NTFS

Lectures complémentaires

40
and31415

Comme déjà mentionné dans les commentaires, junction.exe est sorti avant Vista/Winserver 2008, fourni avec la commande mklink.

Par conséquent, il est inutile de l'utiliser à partir de Vista. Les versions de Windows antérieures à Vista ne sont plus prises en charge de toute façon.

De plus, junction.exe ne prend pas en charge les liens symboliques NTFS (uniquement les jonctions NTFS ). , introduits avec Vista/WinServer 2008 et la commande mlink.

2
paradroid