24

При разработке моего продукта на моем тестовом устройстве одновременно было установлено несколько версий приложения. Однако, чтобы получить абсолютные пути, которые использует мое приложение для работы, мне нужно переключить или переименовать папки, чтобы версия, которую я хочу протестировать, имела правильный путь, скажем C:\Program Files\My Company\My App\My App.exe . Я сделал ярлык, который нацелен на этот путь, но если этот ярлык открывается, когда ни одна из версий в настоящее время не имеет этого пути, ярлык автоматически обновится, думая, что файл был перемещен навсегда. Это вызывало тихие сбои, пока я не обнаружил, что происходит. Я не знал, что это была особенность ярлыков Windows до сих пор.

Так что мой вопрос прост. Есть ли способ отключить эту функцию? Во всем мире это хорошо, но решение для ярлыка будет лучше.

Использование пакетного файла вместо ярлыка - одно из решений, но мне интересно, есть ли способ заставить эту работу работать, хотя ярлык все еще используется.

Я использую Windows 10 Home и Windows 7 Home.

4 ответа4

24

Остановите и отключите службу клиента отслеживания распределенных ссылок (TrkWks).

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

Источник: Отслеживание распределенных ссылок - Служба поддержки Microsoft

13

Вы можете использовать PowerShell! Этот небольшой скрипт удаляет файл LNK, создавая тот же эффект, что и классическая утилита shortcut .

$linkfile = Resolve-Path $args[0]
$bytes = [IO.File]::ReadAllBytes($linkfile)
$bytes[0x16] = $bytes[0x16] -bor 0x36
[IO.File]::WriteAllBytes($linkfile, $bytes)

Чтобы использовать его, сохраните этот текст как файл .ps1 , например, notrack.ps1 . Если вы этого еще не сделали, следуйте инструкциям в разделе «Включение сценариев» вики-тега PowerShell . Затем вы можете запустить его из командной строки PowerShell:

.\notrack.ps1 C:\path\to\my\shortcut.lnk

Ярлыки, которые настроены таким образом, не изменятся, когда их цель перемещается. Если такой ярлык сломается, при попытке его открыть ничего не произойдет.

Я собрал двоичную математику, использованную в моем сценарии, из этого 48-страничного Microsoft PDF в формате LNK.

8

Используйте команду shortcut.exe Опция -s:

shortcut: [-? -h -f -c -r -s] [[-t] target [[-n] name]] [-d working directory]
        [-a Arguments] [-i Iconfile] [-x Icon index] [-u {all|[natdix]}]
        [-l logfile]

  -? -h        This help
  -f           Force overwrite of an existing short cut
  -c           Change existing shortcut
  -s           Make shortcut non tracking (Stupid)
  -r           Resolve broken shortcut
  -t target    Specifies the target of the shortcut
  -n name      Specifies the file name of the shortcut file
  -d directory Specifies the directory name to start the application in
  -a arguments Specifies the arguments passed when the shortcut is used
  -i iconfile  Specifiles the file the icon is in
  -x index     Specifies the index into the icon file
  -u [spec]    Dumps the contents of a shortcut. 'all' is the same as 'natdix'
               but the letters of 'natdix' can be specified to display specific
               fields in the shortcut (repeats allowed, and order followed)
  -l logfile   record error messages in specified file
4

Вы можете включить следующий объект групповой политики:

Конфигурация пользователя \ Административные шаблоны \ Меню "Пуск" и панель задач \ Не используйте метод поиска при разрешении сочетаний клавиш

соответствующий раздел реестра: HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoResolveSearch

Конфигурация пользователя \ Административные шаблоны \ Меню "Пуск" и панель задач \ Не использовать метод отслеживания при разрешении сочетаний клавиш

соответствующий ключ реестра:

HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoResolveTrack

Конфигурация пользователя \ Административные шаблоны \ Компоненты Windows \ Проводник \ Не отслеживать ярлыки оболочки во время роуминга

соответствующий раздел реестра: HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\LinkResolveIgnoreLinkInfo

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .