A junction is definitely not the same thing as a directory symbolic link, although they behave similarly. The main difference is that, if you are looking at a remote server, junctions are processed at the server and directory symbolic links are processed at the client. Also see Matthew's comment on the fact that this means symbolic links on the local file system can point to remote file systems.
Suppose that on a machine named Alice you were to put a junction point c:\myjp
and a directory symbolic link c:\mysymlink
, both pointing to c:\targetfolder
. While you're using Alice you won't notice much difference between them. But if you're using another machine named Bob, then the junction point
\\Alice\c$\myjp
will point to \\Alice\c$\targetfolder
but the symbolic link
\\Alice\c$\mysymlink
will point to \\Bob\c$\targetfolder
(Caveat: by default, the system doesn't follow symlinks on remote volumes, so in most cases the second example will actually result in either "File Not Found" or "The symbolic link cannot be followed because its type is disabled.")
The difference between a directory symbolic link and a file symbolic link is simply that one represents a directory and one represents a file. Since the target of the link doesn't need to exist when the link is created, the file system needs to know whether to tell applications that it is a directory or not.
It should also be noted that creating a symbolic link requires special privilege (by default, only available to elevated processes) whereas creating a junction only requires access to the file system.
2
Related: http://superuser.com/q/347930/24500
– surfasb – 2011-12-29T13:05:36.963