NTFS junction point

From Wikipedia, the free encyclopedia
Jump to: navigation, search
This article is about the NTFS file system feature. For the video game studio, see Junction Point Studios.

An NTFS junction point is a feature of the NTFS file system that provides the ability to create a symbolic link to a directory which then functions as an alias of that directory. This has many benefits over a Windows shell shortcut (.lnk) file, such as allowing access to files within the directory via Windows Explorer, the Command Prompt, etc.

Junction points can only link to a local volume; junction points to remote shares are unsupported.[1]

Junction points are a type of NTFS reparse point; they were introduced with NTFS 3.0, the default file system for Windows 2000 (Windows NT 5.0). The Windows 2000 and Windows 2003 Resource Kits include a program called linkd,[2] to create junction points; Mark Russinovich of Winternals released a tool called junction[3] which provided more complete functionality. Windows XP includes "fsutil";[4]Masatoshi Kimura released a filter driver[5] for the soft/symbolic link functionality existing in Windows XP's NTFS version, to be accessible to the end user. Windows Vista, Windows Server 2008, and later operating systems include an mklink command-line utility for creating junction points.

Examples of use[edit]

Program redirection[edit]

By setting a junction point that points to a directory containing a particular version of a piece of software, it may be possible to add another version of the software and redirect the junction point to point to the version desired.

Saving disk space[edit]

The contents of a junction use almost no disk space (they simply point to the original files in the original directory). If you need to have multiple points of entry to a large directory, junction points will serve that purpose well. Junction points should not be confused with a copy of something as they simply point to the original. If directories need to be modified separately a junction cannot be used as it does not provide a distinct copy of the directory or files within.

Circumventing pre-defined paths[edit]

Since reinstalling Windows (or installing a new version) often requires deleting the contents of the C: drive, it is advantageous to create multiple partitions so only one partition needs to be deleted during the installation. However, some programs don't let the user choose the installation directory, or install some of their files to the C: drive even when they are installed to a different drive. By creating a junction point, the program can be tricked into installing to a different directory.

Obtaining a list of junction points[edit]

A list of all the junctions present in the current directory can be obtained from an elevated Command Prompt as Admin by executing "dir /aL", and a list of all the junctions present on a disk volume, by executing "dir /aL /s C:\", where "C:" is the volume to scan.

Creating or deleting a junction point[edit]

A junction point can be created in Vista or later [6]

mklink /J Source Destination 

To delete it in Vista or later, use: [7]

rmdir 

or

fsutil reparsepoint delete PATH

A junction point can be created in XP (after installing; Server 2003 Resource Kit) with

LINKD Source Destination

To delete it in XP, use:

LINKD Source /D 

Limitations[edit]

Neither the Windows NT startup process nor the Windows Vista startup process support Junction points, so it's impossible to redirect certain system folders:

  • folder containing hiberfil.sys (if it's configured to be outside root directory)
  • \Windows
  • \Windows\System32
  • \Windows\Config

However it is possible to redirect non-critical folders:

  • \Users
  • \Documents and Settings
  • \Program Files
  • \Program Files (x86)

See also[edit]

References[edit]

  1. ^ Sysinternals Junction documentation
  2. ^ Microsoft Knowledge Base, 2007-02-20, How to create and manipulate NTFS junction points, http://support.microsoft.com/kb/205524/en-us
  3. ^ Mark Russinovich, 2010-09-08, Junction, http://technet.microsoft.com/en-us/sysinternals/bb896768
  4. ^ http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/fsutil.mspx?mfr=true
  5. ^ http://schinagl.priv.at/nt/ln/ln.html#symboliclinksforwindowsxp
  6. ^ "mklink"
  7. ^ "How to Delete a Junction by Using Command Line in Windows 7"

External links[edit]