Since Windows has continued to evolve and add more functionality over time, you may find yourself curious as to why it continues to use older “features” like shortcut files. With that in mind, today’s SuperUser Q&A post has answers to a confused reader’s questions.
Today’s Question & Answer session comes to us courtesy of SuperUser—a subdivision of Stack Exchange, a community-driven grouping of Q&A web sites.
SuperUser reader Peter Mortensen wants to know why Windows continues to use shortcut files instead of symbolic links:
Windows XP and later versions support symbolic links, yet Windows continues to use shortcut files (which essentially store the location of the linked file as text). Why?
Why does Windows continue to use shortcut files instead of symbolic links?
SuperUser contributor Jonno has the answer for us:
There are a number of reasons. For example:
- You can store different levels of compatibility against several different shortcuts to the same exe file as they are interpreted by the shell, rather than the file system.
- Certain shortcut links do not actually exist in the file system. Some of them are simply references to GUIDs or special strings interpreted by the shell.
- You cannot include switches in a symbolic link. Sure, you can point to the exe file, but you cannot “tell” that exe file any further arguments.
- You cannot choose an icon for a symbolic link.
- You cannot choose what directory to work from in a symbolic link.
- Shortcut files do not have to point to just files, they can also be hyperlinks or protocol links (like .URL files).
- LNK files can exist on any file system. Symbolic links are handled by the file system itself, in the case of Windows, NTFS.
- There is no real need to replace them. They work, are tiny in size, and can be scaled up in the future should there ever be a need for more functionality to be added to them than what is already listed above.
- Administrative rights are required to create a symbolic link (with good reason), otherwise redirection of innocent files to malicious ones can be executed with very little work.
There are more reasons than this, but I think this is enough to get you started. Here is an MSDN blog link provided by grawity that provides more information about parts of this topic.
Have something to add to the explanation? Sound off in the comments. Want to read more answers from other tech-savvy Stack Exchange users? Check out the full discussion thread here.