· News
· Articles
· Mailinglists
· Files
· Glossary
· Links
· Compatibility Lists
Welcome to our website
To take full advantage of all features you need to login or register. Registration is completely free and takes only a few seconds.
NTFS Symlinks and other special features
Posted by: admin on: 11/15/2011 09:30 PM [ Print | 0 comment(s) ]
Windows 2000 and higher supports directory symbolic links, where a directory serves as a symbolic link to another directory on the computer. For example, if the directory D:\SYMLINK specified C:\WINNT\SYSTEM32 as its target, then an application accessing D:\SYMLINK\DRIVERS would in reality be accessing C:\WINNT\SYSTEM32\DRIVERS. Directory symbolic links are known as NTFS junctions in Windows. Unfortunately, Windows comes with no tools for creating junctions—you have to purchase the Win2K Resource Kit, which comes with the linkd program for creating junctions. I therefore decided to write my own junction-creating tool: Junction. Junction not only allows you to create NTFS junctions, it allows you to see if files or directories are actually reparse points. Reparse points are the mechanism on which NTFS junctions are based, and they are used by Windows' Remote Storage Service (RSS), as well as volume mount points.
Using Junction
Use junction to list junctions:
Usage: [-s]
-s Recurse subdirectories
Examples:
To determine if a file is a junction, specify the file name:
junction c:\test
To list junctions beneath a directory, include the –s switch:
junction -s c:\
To create a junction c:\Program-Files for "c:\Program Files":
C:\>md Program-Files
C:\>junction c:\Program-Files "c:\Program Files"
To delete a junction, use the –d switch:
junction -d c:\Program-Files
You can surpass the 26 drive letter limitation by using NTFS junction points. By using junction points, you can graft a target folder onto another NTFS folder or "mount" a volume onto an NTFS junction point. Junction points are transparent to programs.
Back to the top
Preview Tools for NTFS Junction Points
Microsoft offers three utilities for creating and manipulating NTFS junction points:
Linkd.exe
•Grafts any target folder onto a Windows 2000 version of NTFS folder
•Displays the target of an NTFS junction point
•Deletes NTFS junction points that are created with Linkd.exe
•Location: Microsoft Windows 2000 Resource Kit
Mountvol.exe
•Grafts the root folder of a local volume onto a Windows 2000 version of NTFS folder (or "mounts" the volume)
•Displays the target of an NTFS junction point that is used to mount a volume
•Lists the local file system volumes that are available for use
•Deletes the volume mount points that are created with mountvol.exe
•Location: Windows 2000 CD-ROM in the I386 folder
Delrp.exe
•Deletes NTFS junction points
•Also deletes other types of reparse points, which are the entities that underlie junction points
•Aimed primarily at developers who create reparse points
•Location: Microsoft Windows 2000 Resource Kit
•To create a junction point to your desktop:
1.At a command prompt, type linkd mydesktop user profile\desktop (where user profile is the name of the user profile).
2.Type dir mydesktop to display the contents of your desktop.
•To list the available volumes on your system, at a command prompt, type mountvol.
\\?\Volume{e2464851-8089-11d2-8803-806d6172696f}\ C:\
\\?\Volume{e2464852-8089-11d2-8803-806d6172696f}\ D:\
\\?\Volume{e2464850-8089-11d2-8803-806d6172696f}\ R:\
NOTE: The string after "Volume" is the GUID that is used to identify a unique volume even if the drive letter changes.
•To mount your CD-ROM onto an NTFS junction point:
1.At a command prompt, type md cd.
2.Type mountvol cd \\?\Volume{e2464850-8089-11d2-8803-806d6172696f}\.
3.Type dir cd to display the contents of your CD-ROM.
•To mount another volume onto an NTFS junction point on your system drive:
1.At a command prompt, type md ddrive.
2.Type mountvol ddrive \\?\Volume{e2464852-8089-11d2-8803-806d6172696f}\
3.Type dir ddrive to displays the contents of drive D.
NOTE: When you display the contents of a folder by using the "dir" command, NTFS junction points are indicated by {Junction}.
•To delete junction points:
◦To delete the mydesktop junction point, at a command prompt, type linkd mydesktop /d or Delrp mydesktop.
◦To delete the CD mount point, at a command prompt, type mountvol \\?\Volume{e2464850-8089-11d2-8803-806d6172696f}\ /d.
◦To delete the ddrive mount point, at a command prompt, type mountvol \\?\Volume{e2464852-8089-11d2-8803-806d6172696f}\ /d.
Back to the top
Usage Recommendations
NOTE: Microsoft recommends that you follow these recommendations closely when you use junction points:
•Use NTFS ACLs to protect junction points from inadvertent deletion.
•Use NTFS ACLs to protect files and directories that are targeted by junction points from inadvertent deletion or other file system operations.
•Never delete a junction point by using Explorer, a del /s command, or other file system utilities that walk recursively into directory trees. These utilities affect the target directory and all subdirectories.
•Use caution when you apply ACLs or change file compression in a directory tree that includes NTFS junction points.
•Do not create namespace cycles with NTFS or DFS junction points.
•Put all your junction points in a secure location in a namespace where you can test them out in safety, and where other users will not mistakenly delete them or walk through them.
Just for info of readers: there are two broadly different categories of things going on here.
1) Hard links. This is just normal file system stuff: a plain old file with one name is made up of an MFT entry ("the file") and a directory entry ("the link") that refers to it. Adding more hard links doesn't really alter things.
2) Fancy file system behaviour. In NTFS, there is a concept called a 'reparse point'. Any existing dir/file can be made into a reparse point. That mechanism is then used to build a variety of user-visible features:
- Mount points: directory points to the root of another disk volume.
- Junction: directory points to another directory.
- Symbolic link: directory/file points to another directory/file.
The difference between junctions and symbolic links only shows up across network connections. Junctions are interpreted on the server, symbolic links are interpreted on the client.
Oh, and shell 'shortcuts' are not related to any of this at all. A shortcut is just a file written by the shell that the shell understands how to use. No particular file system support needed.
Using Junction
Use junction to list junctions:
Usage: [-s]
-s Recurse subdirectories
Examples:
To determine if a file is a junction, specify the file name:
junction c:\test
To list junctions beneath a directory, include the –s switch:
junction -s c:\
To create a junction c:\Program-Files for "c:\Program Files":
C:\>md Program-Files
C:\>junction c:\Program-Files "c:\Program Files"
To delete a junction, use the –d switch:
junction -d c:\Program-Files
You can surpass the 26 drive letter limitation by using NTFS junction points. By using junction points, you can graft a target folder onto another NTFS folder or "mount" a volume onto an NTFS junction point. Junction points are transparent to programs.
Back to the top
Preview Tools for NTFS Junction Points
Microsoft offers three utilities for creating and manipulating NTFS junction points:
Linkd.exe
•Grafts any target folder onto a Windows 2000 version of NTFS folder
•Displays the target of an NTFS junction point
•Deletes NTFS junction points that are created with Linkd.exe
•Location: Microsoft Windows 2000 Resource Kit
Mountvol.exe
•Grafts the root folder of a local volume onto a Windows 2000 version of NTFS folder (or "mounts" the volume)
•Displays the target of an NTFS junction point that is used to mount a volume
•Lists the local file system volumes that are available for use
•Deletes the volume mount points that are created with mountvol.exe
•Location: Windows 2000 CD-ROM in the I386 folder
Delrp.exe
•Deletes NTFS junction points
•Also deletes other types of reparse points, which are the entities that underlie junction points
•Aimed primarily at developers who create reparse points
•Location: Microsoft Windows 2000 Resource Kit
•To create a junction point to your desktop:
1.At a command prompt, type linkd mydesktop user profile\desktop (where user profile is the name of the user profile).
2.Type dir mydesktop to display the contents of your desktop.
•To list the available volumes on your system, at a command prompt, type mountvol.
\\?\Volume{e2464851-8089-11d2-8803-806d6172696f}\ C:\
\\?\Volume{e2464852-8089-11d2-8803-806d6172696f}\ D:\
\\?\Volume{e2464850-8089-11d2-8803-806d6172696f}\ R:\
NOTE: The string after "Volume" is the GUID that is used to identify a unique volume even if the drive letter changes.
•To mount your CD-ROM onto an NTFS junction point:
1.At a command prompt, type md cd.
2.Type mountvol cd \\?\Volume{e2464850-8089-11d2-8803-806d6172696f}\.
3.Type dir cd to display the contents of your CD-ROM.
•To mount another volume onto an NTFS junction point on your system drive:
1.At a command prompt, type md ddrive.
2.Type mountvol ddrive \\?\Volume{e2464852-8089-11d2-8803-806d6172696f}\
3.Type dir ddrive to displays the contents of drive D.
NOTE: When you display the contents of a folder by using the "dir" command, NTFS junction points are indicated by {Junction}.
•To delete junction points:
◦To delete the mydesktop junction point, at a command prompt, type linkd mydesktop /d or Delrp mydesktop.
◦To delete the CD mount point, at a command prompt, type mountvol \\?\Volume{e2464850-8089-11d2-8803-806d6172696f}\ /d.
◦To delete the ddrive mount point, at a command prompt, type mountvol \\?\Volume{e2464852-8089-11d2-8803-806d6172696f}\ /d.
Back to the top
Usage Recommendations
NOTE: Microsoft recommends that you follow these recommendations closely when you use junction points:
•Use NTFS ACLs to protect junction points from inadvertent deletion.
•Use NTFS ACLs to protect files and directories that are targeted by junction points from inadvertent deletion or other file system operations.
•Never delete a junction point by using Explorer, a del /s command, or other file system utilities that walk recursively into directory trees. These utilities affect the target directory and all subdirectories.
•Use caution when you apply ACLs or change file compression in a directory tree that includes NTFS junction points.
•Do not create namespace cycles with NTFS or DFS junction points.
•Put all your junction points in a secure location in a namespace where you can test them out in safety, and where other users will not mistakenly delete them or walk through them.
Just for info of readers: there are two broadly different categories of things going on here.
1) Hard links. This is just normal file system stuff: a plain old file with one name is made up of an MFT entry ("the file") and a directory entry ("the link") that refers to it. Adding more hard links doesn't really alter things.
2) Fancy file system behaviour. In NTFS, there is a concept called a 'reparse point'. Any existing dir/file can be made into a reparse point. That mechanism is then used to build a variety of user-visible features:
- Mount points: directory points to the root of another disk volume.
- Junction: directory points to another directory.
- Symbolic link: directory/file points to another directory/file.
The difference between junctions and symbolic links only shows up across network connections. Junctions are interpreted on the server, symbolic links are interpreted on the client.
Oh, and shell 'shortcuts' are not related to any of this at all. A shortcut is just a file written by the shell that the shell understands how to use. No particular file system support needed.

































