Windows 7 теперь изменяет ярлык при перемещении приложения?

302
Conrad

Я только что обнаружил, что если у меня есть ярлык ( .lnk) для исполняемого файла на моем ПК, а затем я перемещаю исполняемый файл в другую папку на ПК, ярлык будет автоматически обновляться, чтобы отразить новое местоположение. Это происходит с почти полностью исправленным ПК с Windows 7 (x64), что также подтверждено на другом аналогичном W7-боксе.

Когда это начало происходить? Это очень удивительно, учитывая, что это не было ожидаемой функциональностью с момента появления Windows. (Особенно плохо, если вы полагаетесь на старое поведение ярлыка, просто терпящее неудачу.) Это происходит сейчас на любой другой версии Windows?

2
AFAIR это функция NTFS, и она работает так с Vista. Его можно отключить, остановив службу клиента отслеживания распределенных ссылок. gronostaj 7 лет назад 4
@gronostaj действительно, похоже, причина, но это не объясняет, как функциональность по умолчанию изменилась за последний месяц или два. Conrad 7 лет назад 0

1 ответ на вопрос

5
Ben N

Windows отслеживает ярлыки в течение достаточно долгого времени, хотя с годами она стала умнее.

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

В Windows NT Microsoft представила NTFS, которая во многих отношениях лучше FAT32. Соответственно, он может назначить каждому файлу и тому идентификатор объекта. Когда ярлык не работает, Windows ищет идентификатор объекта, который остается неизменным независимо от того, сколько вы перемещаете или переименовываете файл в одном томе.

Дальнейшее чтение: отслеживание ярлыков Раймонда Чена.

В Windows 2000 Microsoft добавила службу клиента отслеживания распределенных ссылок. Этот сервис следит за перемещенными файлами. Когда вы перемещаете файл между томами (тем самым изменяя идентификатор объекта), он записывает исходное местоположение и новое место. Если поиск идентификатора объекта не исправляет сломанный ярлык, служба клиента отслеживания распределенных ссылок может найти его на другом диске. Заметьте, что если вы остановите эту службу, исправления внутри тома все равно будут работать, но перемещения между томами фактически сломают ярлык. В домене эта клиентская служба работает со своим аналогом на контроллерах домена, Distributed Link Tracking Server, который может помочь найти пропущенную цель, даже если она перемещается по компьютерам.

Дополнительная информация: Отслеживание распределенных ссылок на контроллерах домена под управлением Windows .

Похоже, что в последнее время в этой архитектуре не было изменений. Я также вижу такое поведение в Windows 10. Для чего бы то ни было, поведение отслеживания ярлыков можно изменить с помощью политик, упомянутых в статье «Отслеживание ярлыков».

Отличная история, спасибо. Все еще странно, что что-то изменилось на моем одном ПК W7 (не подключенном к домену AD) в течение последнего месяца или 2? Это укусило меня в нижние регионы на рабочем ПК вчера вечером. Conrad 7 лет назад 0
@Conrad Это интересно; Я просматриваю историю обновлений Windows, чтобы увидеть, есть ли какие-либо соответствующие изменения. Я дам вам знать, если найду что-нибудь. Ben N 7 лет назад 1
@Conrad Я только что провел некоторые эксперименты на виртуальной машине и обнаружил, что даже компьютер под управлением Windows 7, который не обновлялся с 2010 года, может отслеживать целевые объекты ссылок на разных томах. (Это может работать немного непоследовательно, потому что в первый раз, когда я попробовал это, ярлык сломался, но после переформатирования одного тома с FAT на NTFS и перезагрузки, многотомное отслеживание работало нормально.) Если служба DLTC не работает работает, это определенно не будет отслеживать через объемы. Обратите внимание, что копирование и удаление в отличие от перемещения сломают ярлык. Ben N 7 лет назад 2