« elsdoerfer.name

NTFS Link

NTFS Link is a set of Windows Shell Extensions (i.e. they hook into the Windows Explorer), providing extended functionality for creating and using hard links and junction points on NTFS file systems. As neither hard links nor junctions are available on FAT, it will really only work if you are using NTFS - version 5 or greater to be exact, which basically means Windows 2000 and above.

NTFS Link makes creating a link or junction via the Windows Explorer as easy as copying a file. It also adds a couple of features to improve the usability of links, e.g. by highlighting links via icon overlays, and making sure junctions are deleted correctly.

Be sure to check out the screenshots and the FAQ below.

hard links? junctions?

See Wikipedia 1 and Wikipedia 2.

screenshots

NTFS Link Screenshot NTFS Link Screenshot NTFS Link Screenshot

Although there are a couple of different ways to actually create a link using this extension, the option you'll probably end up using most is what you see in the leftmost picture above. Just drag&drop a file (for a hard link) or a folder (for a junction) from one location to another, using the right mouse button, and click on the new item in the menu that just appeared next to your mouse cursor.

download

Available localizations which are not (yet) included in the official distribution. If you want to translate the tool into your own or any other language, see the faq below for more info.

faq

So, how can I create links using the Windows Explorer?
NTFS Link currently offers three different ways to do this:

  1. The one mostly used is hidden in the drag&drop menu - I already mentioned it above.
  2. You can also use the New menu. Right-click on an empty space somewhere in any explorer window or on the Desktop, and choose "New". You'll see two items that NTFS Link created there, titled "NTFS Hardlink" and "NTFS Junction Point".
  3. A third feature allows you to convert an empty folder into a junction. Just right-click on it, and choose "NTFS Link | Link Folder" from the menu.

What is the difference between the links this tool creates and the shortcuts that Windows supports out of the box?
In a nutshell, a shortcut is just a file that contains the path of the target that it points to. It's up to each individual application to decide how it wants to handle the shortcut, i.e. follow the "redirect" or work with the shortcut file itself.

A symbolic link or junction works actually much the same, except that is is resolved by the kernel. Applications are not aware that they are dealing with a symbol link, and do not need to be. You're links will just work. For example, try opening a folder shortcut in Windows Explorer: note that it really just opens the target folder the shortcut is pointing to. Try opening a symbolic link to a folder: The contents of the target actually appear as if they were inside the link.

Hard links, finally, work very differently. They cause one and the same file to appear in multiple directories. All the entries point to the same piece of data on your disk and are completely equal, i.e. there is, strictly speaking, no actual link that "points somewhere else". There is no way to differentiate between the original file and the link. If you delete the original, the link you created will continue to function, since it is the file. This is different to symbolic links and shortcuts, which break once the target is deleted or moved. Like symbolic links though, hard links are also resolved by the kernel, meaning they will also work regardless of whether an application developer chose to support them.

For more extensive information, see this article on ShellShocked.

Do I have to expect any issues when deleting links?
For hard links, no, I'm not aware of any. However, Windows Explorer, at the time of this writing (XP SP2), has no idea how to handle junction points. Normally, if you delete a junction, Explorer treats it like any folder and deletes the complete content of the target directory as well. To fix this, NTFS Link intercepts the deletion of folders, and makes sure that junctions are correctly processed. If you want to be on the safe side, right-click on the junction point and choose "NTFS Link | Unlink Folder" before deleting it.

However, please be careful with other tools that might not be aware of junctions either and will operate within the junction target. In most cases though, this is actually what you want and exactly the reason why who are using a junction to begin with.

What does "junction tracking" in the configuration utility mean?
If you delete, move or rename the target folder of a junction, the junction will stop working. NTFS Link strives to automatically correct these broken links, but since there is no functionality in Windows to find the junctions pointing to a folder, it tries to keep track of them itself (however, please note that if you create a junction using some other external utility, NTFS Link will of course not know about it).

There are two different ways to store this information: The preferred solution is "NTFS streams" - basically, the extension attaches additional data(-streams) to the directories you create links to. The problem is that streams are not supported on FAT partitions - however, it is perfectly possible to create a junction ON a NTFS partition pointing TO a folder on a FAT partition. To work around that issue, NTFS Link can alternatively use the registry to save the necessary tracking data (though in that case the information will not be available from within a different Windows installation).

Can you add other languages in the future?
Yes, but only with your help. Here's what you need to do:

Fork me on GitHub