NTFS symbolic link
An NTFS symbolic link (symlink) is a filesystem object in the NTFS filesystem that points to another filesystem object. The object being pointed to is called the target. Symbolic links should be transparent to users; the links appear as normal files or directories, and can be acted upon by the user or application in exactly the same manner. Symbolic links are designed to aid in migration and application compatibility with POSIX operating systems, and were introduced with the modifications made to the NTFS file system with Windows Vista, but available through filter drivers for Windows XP.
Unlike an NTFS junction point (available since Windows 2000), a symbolic link can also point to a file or remote SMB network path. While NTFS junction points support only absolute paths on local drives, the NTFS symbolic links allow linking using relative paths. Additionally, the NTFS symbolic link implementation provides full support for cross-filesystem links. However, the functionality enabling cross-host symbolic links requires that the remote system also support them, which effectively limits their support to Windows Vista and later Windows operating systems.
An NTFS symbolic link is not the same as a Windows shortcut file, which is a regular file. The latter may be created on any filesystem (such as the earlier FAT32), may contain metadata (such as an icon to display when the shortcut is viewed in Windows Explorer), and is not transparent to applications.
The default security settings in Windows Vista/Windows 7 disallow non-elevated administrators and all non-administrators from creating symbolic links. This behavior can be changed running "secpol.msc" the Local Security Policy management console (under: Security Settings\Local Policies\User Rights Assignment\Create symbolic links). It can be worked around by starting cmd.exe with Run as administrator option or the
Please note: For Windows 2000/XP, you would use an NTFS junction point.
mklink command is used to create a symbolic link. It is natively available in the Command Prompt in Windows Vista/2008+ (not in PowerShell or as an executable). It has the following command line syntax:
mklink [[/D] | [/H] | [/J]] linkName target
/D– Creates a directory symbolic link. Default is a file symbolic link.
/H– Creates a hard link instead of a symbolic link.
/J– Creates a Directory Junction.
linkName– Specifies the new symbolic link name.
target– Specifies the path (relative or absolute) that the new link refers to. Enclose with quotation marks if the path contains spaces, etc.
- Note: while
linkNamepath is to be relative to 'Current Directory' path, if
targetis relative : it is relative to the
linkName's path and not to the 'Current Directory' path.
To delete a symbolic link to a file or directory, the following command line syntax can be used (in each case, "linkname" specifies the name of the symbolic link to be deleted):
- For links to files:
- For links to directories:
Symbolic links can point to non-existent targets because the operating system does not check to see if the target exists.
Symbolic links do not work at boot, so it's impossible to redirect e.g.:
- folder containing hiberfil.sys (if it's configured to be outside root directory)
Windows Installer does not fully support symbolic links. A redirected \Windows\Installer will cause most .msi-based Windows installers to fail with error 2755 and/or error 1632.
Nevertheless, it is possible to redirect:
- \Documents and Settings
- \Program Files
- \Program Files (x86)
Since Windows XP uses the same NTFS format version as later releases, it's feasible to enable symbolic links support in it. A third-party driver exists that does it by installing itself as a file system filter. 
- Hermann Schinagl (August 23, 2013). "ln - commandline hardlinks - Symbolic links for Windows XP".
- Mklink on technet.microsoft.com