Просмотреть список символических ссылок в системе?

Вопрос или проблема

Есть ли способ увидеть список всех активных символических ссылок на компьютере с Windows?


Я принял ответ @JoachimOtahal, так как он работает в пределах одной секунды, и, думаю, он предоставил то, что мне нужно было, когда был задан вопрос.

Ранее принятый ответ обернутый в код времени:

C:\Windows\System32> cmd /E /C "prompt $T$$ & echo.%TIME%$ & dir /AL /S C:\ | find "SYMLINK" & for %Z in (.) do rem/ "
22:01:17.00$
06/05/2021  08:26 AM    <SYMLINKD>     Все пользователи [C:\ProgramData]
06/14/2021  04:57 PM    <SYMLINK>      DEFAULTUSER_BASE [C:\ProgramData\Microsoft\Windows\Containers\BaseImages\40caa4df-ced5-4c45-99a3-7e2bc561dafb\BaseLayer\Files\Windows\System32\Config\DEFAULT]
06/14/2021  04:57 PM    <SYMLINK>      SAM_BASE [C:\ProgramData\Microsoft\Windows\Containers\BaseImages\40caa4df-ced5-4c45-99a3-7e2bc561dafb\BaseLayer\Files\Windows\System32\Config\SAM]
06/14/2021  04:57 PM    <SYMLINK>      SECURITY_BASE [C:\ProgramData\Microsoft\Windows\Containers\BaseImages\40caa4df-ced5-4c45-99a3-7e2bc561dafb\BaseLayer\Files\Windows\System32\Config\SECURITY]
06/14/2021  04:57 PM    <SYMLINK>      SOFTWARE_BASE [C:\ProgramData\Microsoft\Windows\Containers\BaseImages\40caa4df-ced5-4c45-99a3-7e2bc561dafb\BaseLayer\Files\Windows\System32\Config\SOFTWARE]
06/14/2021  04:57 PM    <SYMLINK>      SYSTEM_BASE [C:\ProgramData\Microsoft\Windows\Containers\BaseImages\40caa4df-ced5-4c45-99a3-7e2bc561dafb\BaseLayer\Files\Windows\System32\Config\SYSTEM]
06/14/2021  04:57 PM    <SYMLINK>      DEFAULTUSER_BASE [C:\ProgramData\Microsoft\Windows\Containers\BaseImages\40caa4df-ced5-4c45-99a3-7e2bc561dafb\BaseLayer\Files\Windows\System32\Config\DEFAULT]
06/14/2021  04:57 PM    <SYMLINK>      SAM_BASE [C:\ProgramData\Microsoft\Windows\Containers\BaseImages\40caa4df-ced5-4c45-99a3-7e2bc561dafb\BaseLayer\Files\Windows\System32\Config\SAM]
06/14/2021  04:57 PM    <SYMLINK>      SECURITY_BASE [C:\ProgramData\Microsoft\Windows\Containers\BaseImages\40caa4df-ced5-4c45-99a3-7e2bc561dafb\BaseLayer\Files\Windows\System32\Config\SECURITY]
06/14/2021  04:57 PM    <SYMLINK>      SOFTWARE_BASE [C:\ProgramData\Microsoft\Windows\Containers\BaseImages\40caa4df-ced5-4c45-99a3-7e2bc561dafb\BaseLayer\Files\Windows\System32\Config\SOFTWARE]
06/14/2021  04:57 PM    <SYMLINK>      SYSTEM_BASE [C:\ProgramData\Microsoft\Windows\Containers\BaseImages\40caa4df-ced5-4c45-99a3-7e2bc561dafb\BaseLayer\Files\Windows\System32\Config\SYSTEM]
05/22/2021  09:02 AM    <SYMLINKD>     Загрузки [E:\Downloads\]

22:01:38.69$ rem/

Принятый ответ PS7 с разными результатами за секунду: https://superuser.com/a/1652788/68111

$_.Linktype пропускает символические ссылки. $_.Attributes пропускает жесткие ссылки. Джунгли перечислены в обоих свойствах. -Force необходим, иначе скрытые символические ссылки будут пропущены.
Полный рабочий пример, который получает символические ссылки, джунгли и жесткие ссылки:

Get-ChildItem -Path "C:\Windows\","c:\","$env:USERPROFILE" -Force |
    Where-Object { $_.LinkType -ne $null -or $_.Attributes -match "ReparsePoint" } |
    ft FullName,Length,Attributes,Linktype,Target

Вывод выглядит так – в моем случае я создал джунгль, чтобы показать, как это должно выглядеть. Заметьте: у PS все еще есть ошибка, не показывающая цель символических ссылок, проверьте эту информацию: https://stackoverflow.com/questions/16926127/powershell-to-resolve-junction-target-path

PS D:\> Get-ChildItem -Path "C:\Windows\","c:\","$env:USERPROFILE" -Force |
    Where-Object { $_.LinkType -ne $null -or $_.Attributes -match "ReparsePoint" } |
    ft FullName,Length,Attributes,Linktype,Target


FullName                                     Length                                                 Attributes LinkType Target                                                                                                  
--------                                     ------                                                 ---------- -------- ------                                                                                                  
C:\Windows\bfsvc.exe                          79360                                                    Archive HardLink {C:\Windows\WinSxS\amd64_microsoft-windows-b..vironment-servicing_31bf3856ad364e35_10.0.17763.1518_no...
C:\Windows\DfsrAdmin.exe                     232960                                                    Archive HardLink {C:\Windows\WinSxS\msil_dfsradmin_31bf3856ad364e35_10.0.17763.529_none_86a482ce47ce0e6b\DfsrAdmin.exe...
C:\Windows\explorer.exe                     4389168                                                    Archive HardLink {C:\Windows\WinSxS\amd64_microsoft-windows-explorer_31bf3856ad364e35_10.0.17763.1911_none_9f01b4994bb...
C:\Windows\HelpPane.exe                     1072128                                                    Archive HardLink {C:\Windows\WinSxS\amd64_microsoft-windows-help-client_31bf3856ad364e35_10.0.17763.1911_none_b9659da9...
C:\Windows\hh.exe                             18432                                                    Archive HardLink {C:\Windows\WinSxS\amd64_microsoft-windows-htmlhelp_31bf3856ad364e35_10.0.17763.1697_none_15caed9d569...
C:\Windows\mib.bin                            43131                                                    Archive HardLink {C:\Windows\WinSxS\amd64_microsoft-windows-snmp-mgmt-api_31bf3856ad364e35_10.0.17763.1_none_dc5249570...
C:\Windows\notepad.exe                       254464                                                    Archive HardLink {C:\Windows\WinSxS\amd64_microsoft-windows-notepad_31bf3856ad364e35_10.0.17763.1697_none_bc8f846641e0...
C:\Windows\regedit.exe                       357888                                                    Archive HardLink {C:\Windows\WinSxS\amd64_microsoft-windows-registry-editor_31bf3856ad364e35_10.0.17763.1697_none_41a3...
C:\Windows\splwow64.exe                      133632                                                    Archive HardLink {C:\Windows\WinSxS\amd64_microsoft-windows-printing-spooler-core_31bf3856ad364e35_10.0.17763.1697_non...
C:\Windows\twain_32.dll                       64512                                                    Archive HardLink {C:\Windows\WinSxS\wow64_microsoft-windows-w..ion-twaincomponents_31bf3856ad364e35_10.0.17763.1_none_...
C:\Windows\WindowsShell.Manifest                670                                  ReadOnly, Hidden, Archive HardLink {C:\Windows\WinSxS\amd64_microsoft-windows-shell32_31bf3856ad364e35_10.0.17763.1_none_5cef14c36a2559b...
C:\Windows\winhlp32.exe                       11776                                                    Archive HardLink {C:\Windows\WinSxS\wow64_microsoft-windows-winhstb_31bf3856ad364e35_10.0.17763.1_none_2420a29095f0ffc...
C:\Windows\WMSysPr9.prx                      316640                                                    Archive HardLink {C:\Windows\WinSxS\amd64_microsoft-windows-mediaplayer-wmvsdk_31bf3856ad364e35_10.0.17763.1_none_96f1...
C:\Windows\write.exe                          11264                                                    Archive HardLink {C:\Windows\WinSxS\amd64_microsoft-windows-write_31bf3856ad364e35_10.0.17763.1_none_5048bc153541494b\...
C:\BackupPlatte                                                                        Directory, ReparsePoint Junction {Volume{6072e7bc-2cae-11e9-b57a-bc5ff4e5c991}\}                                                         
C:\Dokumente und Einstellungen                      Hidden, System, Directory, ReparsePoint, NotContentIndexed                                                                                                                  
C:\Programme                                        Hidden, System, Directory, ReparsePoint, NotContentIndexed                                                                                                                  
C:\Users\Administrator\Anwendungsdaten              Hidden, System, Directory, ReparsePoint, NotContentIndexed                                                                                                                  
C:\Users\Administrator\Cookies                      Hidden, System, Directory, ReparsePoint, NotContentIndexed                                                                                                                  
C:\Users\Administrator\Druckumgebung                Hidden, System, Directory, ReparsePoint, NotContentIndexed                                                                                                                  
C:\Users\Administrator\Eigene Dateien               Hidden, System, Directory, ReparsePoint, NotContentIndexed                                                                                                                  
C:\Users\Administrator\Lokale Einstellungen         Hidden, System, Directory, ReparsePoint, NotContentIndexed                                                                                                                  
C:\Users\Administrator\Netzwerkumgebung             Hidden, System, Directory, ReparsePoint, NotContentIndexed                                                                                                                  
C:\Users\Administrator\Recent                       Hidden, System, Directory, ReparsePoint, NotContentIndexed                                                                                                                  
C:\Users\Administrator\SendTo                       Hidden, System, Directory, ReparsePoint, NotContentIndexed                                                                                                                  
C:\Users\Administrator\Startmenü                    Hidden, System, Directory, ReparsePoint, NotContentIndexed                                                                                                                  
C:\Users\Administrator\Vorlagen                     Hidden, System, Directory, ReparsePoint, NotContentIndexed            

Простой мод для углубления в то, что я искал (-and $_.Length -eq 1) Только PowerShell 7 +:

PS > Get-ChildItem -Path "C:\Windows\","c:\","$env:USERPROFILE" -Force |
  Where-Object { $_.LinkType -ne $null -or $_.Attributes -match "ReparsePoint" -and $_.Length -eq 1 } |
  ft FullName,Attributes,Linktype,Target

FullName                                                                        Attributes LinkType     Target
--------                                                                        ---------- --------     ------
C:\Documents and Settings       Hidden, System, Directory, ReparsePoint, NotContentIndexed
C:\Users\Louis\Application Data Hidden, System, Directory, ReparsePoint, NotContentIndexed
C:\Users\Louis\Cookies          Hidden, System, Directory, ReparsePoint, NotContentIndexed
C:\Users\Louis\Downloads                                           Directory, ReparsePoint SymbolicLink {E:\Downloads\}
C:\Users\Louis\iCloudDrive                      ReadOnly, Directory, Archive, ReparsePoint              {}
C:\Users\Louis\Local Settings   Hidden, System, Directory, ReparsePoint, NotContentIndexed
C:\Users\Louis\My Documents     Hidden, System, Directory, ReparsePoint, NotContentIndexed
C:\Users\Louis\NetHood          Hidden, System, Directory, ReparsePoint, NotContentIndexed
C:\Users\Louis\PrintHood        Hidden, System, Directory, ReparsePoint, NotContentIndexed
C:\Users\Louis\Recent           Hidden, System, Directory, ReparsePoint, NotContentIndexed
C:\Users\Louis\SendTo           Hidden, System, Directory, ReparsePoint, NotContentIndexed
C:\Users\Louis\Start Menu       Hidden, System, Directory, ReparsePoint, NotContentIndexed
C:\Users\Louis\Templates        Hidden, System, Directory, ReparsePoint, NotContentIndexed

Попробуйте следующую команду:

dir /AL /S C:\
  • /A отображает все файлы с определенным атрибутом, а L указывает на точки повторного анализа (символические ссылки и джунгли)
  • /S делает команду рекурсивной
  • замените C:\ на букву диска, который вы хотите просканировать, или на путь, если вы не хотите сканировать весь диск

В PowerShell

Get-ChildItem -Path C:\ -Force -Recurse -ErrorAction 'silentlycontinue' | 
  Where { $_.Attributes -match "ReparsePoint"}
  • -Force включает скрытые и системные файлы
  • -Recurse получает все дочерние элементы
  • -ErrorAction 'silentlycontinue' подавляет ошибки Доступ к пути XYZ запрещен
  • Where { $_.Attributes -match "ReparsePoint"} проверяет папки и файлы, является ли это джунглем

Объяснение Режима и Атрибутов:

PS > Get-ChildItem | SELECT Mode,Attributes -Unique

Mode                    Attributes
----                    ----------
d----                    Directory
d---s            System, Directory
d---- Directory, NotContentIndexed
d----        Directory, Compressed
la---                      Archive
-a---                      Archive
lar--            ReadOnly, Archive
-a---          Archive, Compressed

Существует также удобная программа для этого под названием NTFSLinksView.

Редактировать: есть также SageLinks, эта также проверяет действительность.

Я знаю, что этот ответ запоздал, но вот, возможно, что-то ближе к тому, что вы, вероятно, искали:

dir /AL /S C:\ | find "SYMLINK"

В Windows файлы НЕ могут содержать символ < или > в имени файла, и поэтому никакой файл не может включать "<SYMLINKD>" в имени файла. Правильный способ искать только символические ссылки – указать "<SYMLINKD>" в опции поиска.

dir /AL /S C:\ | find "<SYMLINKD>"

То же самое касается джунглей:

dir /AL /S C:\ | find "<JUNCTION>"

Даже когда я ищу как символические ссылки, так и джунгли, я все равно рекомендую использовать find с просто “<“, чтобы избежать отображения сводок.

dir /AL /S C:\ | find "<"

Опция /B (dir /AL /B C:\) также может исключить сводку, но это также удаляет адрес точки повторного анализа.

Простой и удобный Windows-приложение, которое мгновенно показывает символические ссылки и их тип:

https://github.com/raspopov/SageLinks

Только что заметил, что это также упоминается выше.

Ответ или решение

На системах Windows менеджмент ярлыков, включая символические ссылки, может быть выполнен с помощью различных инструментов и команд. Символические ссылки (симлинки) позволяют создать указатель на другой файл или каталог, что является удобным способом управления файлами и папками в файловой системе. Если вы хотите просмотреть список всех активных символических ссылок на Windows-машине, ниже представлены несколько методов для выполнения этой задачи.

1. Использование командной строки (CMD)

Вы можете использовать различные команды, включая dir, чтобы просмотреть символические ссылки. Пример команды:

dir /AL /S C:\

Разбор команды:

  • /A: показывает файлы с заданным атрибутом.
  • L: указывает на отображение репарсных точек (символьных ссылок и связывающих точек).
  • /S: делает команду рекурсивной, чтобы искать в подкаталогах.

Эта команда вернет все символические ссылки на указанном диске или в конкретной директории.

Если вам нужно фильтровать результаты, вы также можете использовать find:

dir /AL /S C:\ | find "<SYMLINK>"

<SYMLINK> будет извлекать только символические ссылки, а не другие пункты, такие как жесткие ссылки или джанкции.

2. Использование PowerShell

PowerShell предоставляет более мощный и гибкий способ для управления файловой системой. Например, следующая команда отображает все репарсные точки, включая символические ссылки:

Get-ChildItem -Path C:\ -Force -Recurse -ErrorAction 'silentlycontinue' | 
Where-Object { $_.Attributes -match "ReparsePoint" }

Разбор команды:

  • -Force: включает скрытые и системные файлы.
  • -Recurse: обходит все дочерние элементы.
  • -ErrorAction 'silentlycontinue': подавляет ошибки доступа.

3. Использование специальных утилит

Существуют сторонние приложения, которые могут помочь вам с управлением символическими ссылками. Например:

  • NTFSLinksView — свободная утилита от NirSoft, которая отображает символические ссылки в системе.
  • SageLinks — еще одна программа, которая проверяет целостность ссылок.

4. Примечания

При работе с командной строкой и PowerShell обратите внимание на наличие прав администратора, особенно при доступе к системным директориям (например, C:\Windows). Это может потребовать дополнительных прав для полного доступа ко всем путям.

Также стоит учитывать, что символические ссылки могут не быть видны на основе настроек системы, поэтому использование параметров, показывающих скрытые и системные файлы, будет полезным.

Заключение

Управление символическими ссылками на Windows может осуществляться различными способами с помощью встроенных инструментов и сторонних программ. Вам следует выбирать тот метод, который наиболее соответствует вашим потребностям. Если вы ищете более визуальное представление, то сторонние утилиты могут оказаться полезными.

Использование вышеуказанных команд позволит вам быстро и эффективно получить информацию о символических ссылках в вашей системе.

Оцените материал
Добавить комментарий

Капча загружается...