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.

hard links? junctions?

screenshots

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

Note: Windows Vista comes with improved support for links.
NTFS Links has not yet been updated to officially support Vista.
While there shouldn't be too many problems, it's worth keeping in
mind that some new features are not supported (symbolic links
for files), while other existing functionality of NTFS Link that
is now obsolete has not been removed.

faq

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

The one mostly used is hidden in the drag&drop menu - I already
mentioned it above.

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".

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.

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:

Compile it into a .mo-file (the programs mentioned above
can do this), and copy the .mo to
{NTFSLinkDirectory}\locale\xx\LC_MESSAGES\default.mo to
test (and use it), with xx being the language code,
e.g. "fr", "en".
NTFS Link automatically tries to use the UI language of
your Windows system. However, you can force a particular
language by adding a new string value named "Language"
to the
HKEY_LOCAL_MACHINE\SOFTWARE\elsdoerfer.net\NTFS Link\Config
key in the registry. Use the code of the language you want to
use as the value data.

Post your translation (the raw .po file, not the compiled .mo) to the
patches tracker on SourceForge,
and send me a short note that you did. I will then publish
it on this page, and it will be included future NTFS Link packages.