I've found a description of hard links and junctions in Windows, however I'd like to know ,from the Windows UI or command prompt, how I can view the hard links of a particular file or folder?
6 Answers
The fsutil
utility included in Windows XP and higher. Example:
fsutil.exe hardlink list C:\Windows\System32\notepad.exe
Sample results (from Windows 7):
\Windows\System32\notepad.exe
\Windows\notepad.exe
\Windows\winsxs\amd64_microsoft-windows-notepadwin_31bf3856ad364e35_6.1.7600.16385_none_9ebebe8614be1470\notepad.exe
\Windows\winsxs\amd64_microsoft-windows-notepad_31bf3856ad364e35_6.1.7600.16385_none_cb0f7f2289b0c21a\notepad.exe
-
1Is there also any way to list *soft links* and *junctions* for a file? – Massimo Oct 07 '11 at 05:38
-
Looks like on Server 2003 fsutil doesn't support the `hardlink list` subcommand. Only `hardlink create` is shown by `fsutil hardlink`. – bambams Nov 05 '13 at 17:23
fsutil
requires elevated system privileges. If you just need to read, and not create, links this is very inconvenient.
Microsoft releases also the free findlinks, which is much more syntax friendly, gives extra-details and does not require special privileges.
Judge yourself the same file, as from John K post, analysed with findlinks
:
findlinks c:\windows\notepad.exe
FindLinks v1.0 - Locate file hard links
Copyright (C) 2011 Mark Russinovich
Sysinternals - www.sysinternals.com
c:\windows\notepad.exe
Index: 0x000037A6
Links: 3
Linking files:
c:\Windows\System32\notepad.exe
c:\Windows\winsxs\amd64_microsoft-windows-notepadwin_31bf3856ad364e35_6.1.7600.16385_none_9ebebe8614
be1470\notepad.exe
c:\Windows\winsxs\amd64_microsoft-windows-notepad_31bf3856ad364e35_6.1.7600.16385_none_cb0f7f2289b0c
21a\notepad.exe
EDIT
While the convenience of findlinks
might persist,
starting with Windows 10 Insiders build 14972, symlinks can be created without needing to elevate the console as administrator.
See blogs.windows.com/windowsdeveloper
One can also observe that now fsutil.exe
does not require elevated privileges any more.
Microsoft's goal is to align the symlinks functionality to Linux standards, where they are very common.
Thanks to pinjaliina for pointing out this.
- 233
- 6
- 14
-
I'm on Windows 10 20H2, and `fsutil.exe` didn't require elevated privileges anymore. [There are some changes to symlink permissions in general in Windows 10](https://blogs.windows.com/windowsdeveloper/2016/12/02/symlinks-windows-10/), perhaps that's why. I don't even have Developer Mode enabled. – pinjaliina Feb 14 '21 at 20:19
Not directly what you need but may still be useful for such goal when used cleverly:
FINDDUPE, a standalone command line utility hosted at http://www.sentex.net/~mwandel/finddupe/ address, has side functionality, which allows listing all hardlinks within a directory recursively with the following call:
finddupe -listlink <directory_of_interest>
Here is an example of what one gets as an output:
Hardlink group, 2 of 2 hardlinked instances found in search tree:
".\1"
".\_1"
Number of hardlink groups found: 1
NOTE: There is a number of projects with the similar name on SourceForge, but nothing actually hosts the utility above as for now.
- 21
- 2
Try the program NTFSLinksView - works fine for me on Windows 10, should work on Vista and later.
- 101
- 1