7

Когда я сохраняю ярлык из Firefox на диск, это его содержимое при просмотре в текстовом или шестнадцатеричном редакторе.

[InternetShortcut]
URL=http://superuser.com/
IDList=
HotKey=0
IconFile=C:\Users\Jerry\AppData\Local\Mozilla\Firefox\Profiles\e8oe2h15.default\shortcutCache\ndPGaHoK9RbB9Xs6pYDwiA==.ico
IconIndex=0

Это выглядит очень просто: простой текст с разметкой в файле.

Допустим, я хочу воссоздать этот файл вручную.

  1. Я создаю пустой текстовый файл.
  2. Я вставляю содержимое выше в это.
  3. .. сохранить файл и выйти из программы.
  4. .. изменить расширение файла с TXT на URL.
  5. .. принять риск потери ассоциации с типом файла, нажав YES при появлении запроса.

1

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

2

Цель этого ярлыка Интернета недействительна. Перейдите на страницу свойств ярлыка Интернета и убедитесь, что цель указана правильно.

Что именно подразумевается под target ""?

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

Это должен быть простой файл с URL-адресом, который открывается в веб-браузере. Так что же делает эти файлы "Internet Shortcut" особенными? Что заставляет их тикать? Когда я сравниваю мой файл с оригиналом, они кажутся идентичными. Так в чем же тогда проблема?

Обновить


Вот некоторые интересные выводы. Слово "цель", вероятно, означает URL, а "Таблица свойств ярлыка Интернета", скорее всего, относится к вкладке «Веб-документ» в диалоговом окне свойств файла. Если я правильно помню, он назывался "Ярлык Интернета" в предыдущих версиях Windows (по крайней мере, в Windows 98). С тех пор он переименован в веб-документ.

Это еще не все! Как видно из скриншотов ниже, мой файл использует тот же дайджест SHA1, что и оригинал. Но у него нет общего значка файла и нет вкладки «Веб-документ».

свойства исходного файла новые свойства файла оригинальный файл sha1 новый файл sha1

Более того, когда я переименовываю свой новый файл, чтобы он начинался с заглавной буквы, он становится функциональным файлом ярлыка Интернета. Просто так! Это только начинает работать. Если я переименую его снова, чтобы он начинался с буквы в нижнем регистре, он перестал работать ... снова. Не верьте мне на слово, посмотрите на скриншот ниже.

новые свойства файла с новым именем

Это также помогает начинать имя файла с подчеркивания, тире, точки, скобки, фигурной скобки, квадратной скобки, знака равенства, знака числа, восклицательного знака и т.д. Он даже правильно заменяет значок глобуса на значок листа бумаги. Переименование чего-либо, кроме test или Test действительно меняет значок.

Но что заставляет его вести себя или вести себя неправильно? Например, почему это имеет значение, если имя файла начинается с заглавной буквы? Для обычных файлов такого ограничения нет ...

Обновление 2


Если имя нового файла начинается с заглавной буквы, до изменения расширения имени, а затем переименовывается так, чтобы оно начиналось со строчной буквы ... тогда оно все еще работает!

Так что, если вы пойдете по этому поводу, это будет работать:

newfile Lancelot.txt
pastein Lancelot.txt
rename Lancelot.txt Lancelot.url
rename Lancelot.url lancelot.url

a б

Обновление 3


Вполне вероятно, что первоначальная проблема с файлом test.url возникла на шаге 4 выше. Сначала я создал файл с именем test.txt на другом диске и переименовал его в test.url. Это было до того, как я создал второй файл с таким же именем на системном диске в папке Desktop (как показано выше). Я не помню, но вполне вероятно, что я сначала создал файл, изменил расширение имени, а затем вставил в целевой URL-адрес и сохранил его, надеясь, что он заработает простым двойным щелчком мыши. В отличие от создания файла, вставки в целевой URL, а затем изменения расширения имени.

1 ответ1

7

Я думаю, что что-то получил. Как я и подозревал, Windows каким-то образом усваивает (запоминает) имена, которые вы ранее использовали для файлов ярлыков Интернета. Я провел несколько экспериментов с использованием Windows 10 TP. Я постараюсь обобщить то, что я узнал до сих пор. На приведенном ниже снимке экрана показаны значки и имена файлов, с которыми я экспериментировал.

иконки

Я буду ссылаться на них по номеру, слева направо или по имени.

  • Номер 1 был создан из Firefox путем перетаскивания значка на рабочий стол. Я использовал этот как ссылку. Это работает.
  • Номера 2, 3 и 6 были созданы вручную в виде пустых текстовых файлов. Они были оставлены пустыми, а их расширения имен изменены с txt на url. Они не работают: они приводят к появлению ошибки.

    ошибка

  • Номер 4 был создан вручную как пустой текстовый файл. Содержимое номера 1 было затем вставлено в него, и его расширение имени изменилось с txt на url. Это работает.
  • Номер 5 был создан вручную как пустой текстовый файл. Его имя типа файла и целевой URL были введены вручную. Это работает.
  • Изменение имени файла (исключая расширение) влияет на функцию (независимо от того, работает ли она на самом деле) файла одним из двух способов.

1: Если содержимое файла было правильно определено до его включения (путем установки расширения URL), это не повлияет на изменение имени. Это работало до изменения, и оно будет работать после изменения.

2: Если содержимое файла не было определено (например, пустой файл) до его включения, это не повлияет на изменение имени. Изменение названия само по себе не поможет. Это не сработало раньше и не сработает после изменения. Дополнительно! Позже новое имя файла станет непригодным для использования, если вы в любом случае решите изменить имя файла без правильного определения содержимого (или оставив его пустым), и позже вы вернетесь, чтобы добавить правильное определение URL (см. Пояснения).

  • Изменение содержимого файла влияет на функцию файла одним из двух способов.

1: Если содержимое файла было правильно определено ранее, файл все равно будет работать, как и раньше. Но все изменения, внесенные в файл, будут игнорироваться. Фактически, весь контент может быть удален, и файл все равно будет работать. Чтобы зафиксировать любые изменения, файл должен быть сохранен под новым именем файла, которое никогда ранее не использовалось. Регистр букв учитывается, поэтому внесение изменений в test.url и сохранение его как Test.url (если ранее не использовался) считается новым файлом, независимым от файла test.url. Любые дополнительные изменения должны быть сохранены под другим именем файла, которое никогда ранее не использовалось. Так далее и тому подобное.

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

Содержимое файла

Содержание номера 1, 2, 6:

[InternetShortcut]
URL=http://superuser.com/
IDList=
HotKey=0
IconFile=C:\Users\Jerry\AppData\Local\Mozilla\Firefox\Profiles\bcf6rzuf.default\shortcutCache\ndPGaHoK9RbB9Xs6pYDwiA==.ico
IconIndex=0

Содержание номеров 3 и 4: они пустые!

Содержание номера 5:

[InternetShortcut]
URL=http://microsoft.com/

Заключение

Здесь нужно изучить два ключевых факта.

  1. Файл должен содержать действительную "цель" (то есть URL-адрес) и имя типа файла (ярлык Интернета), прежде чем расширение имени будет изменено (или добавлено).
  2. Используемые имена не могут быть повторно использованы для другого целевого URL. Даже после окончательного удаления исходного файла.

Обновления


Похоже, что открытие файла в Internet Explorer (если вы используете Firefox или другой сторонний браузер) может привести к исправлению испорченного файла URL. Я видел, как это произошло здесь, на Windows 8.1 с IE версии 11. Но, как объяснялось ранее, содержимое файла URL должно быть правильно определено перед открытием в IE. После этого IE будет интерпретировать содержимое и даже добавить хорошую иконку в виде значка файла, по сути, исцелив файл, добавив отсутствующее свойство «Веб-документ». Однако, это не исправило мой файл test.url. Так что это может не работать для всех файлов, и я не уверен, почему.


Я нашел это редактирование реестра, чтобы быть полезным.

  1. Запустите regedit.exe
  2. Перейдите к HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl
  3. Создайте новый ключ с FEATURE_URLFILE_CACHEFLUSH_KB936881
  4. Перейдите к FEATURE_URLFILE_CACHEFLUSH_KB936881
  5. Создать новый меч под названием iexplore.exe
  6. Установите значение iexplore.exe в 1
  7. перезагружать

Источник: Microsoft (KB936881)

После этого мой файл test.url наконец-то начал работать, и вместо глобуса он получил иконку Firefox (см. Скриншот). Это исправление изначально применялось к XP, Server 2003 и Vista. Но, видимо, он работает и в Windows 8.1 (не тестировался в Windows 10).

Причина этой ошибки, приведенная в статье Microsoft KB, не очень детальна, но в ней говорится следующее.

Эта проблема возникает, если оболочка Windows получает уведомление во время процесса создания файла ярлыка Интернета. Это уведомление получено до того, как файл будет полностью записан на диск.

Там не сказано, что именно подразумевается под "уведомлением".


Как я и подозревал, Windows использует некоторые компоненты Internet Explorer для интерпретации этих файлов ярлыков Интернета (URL). Поэтому любой контент, который вы помещаете в этот текстовый файл, используется только для первоначальной интерпретации. После того как вы измените расширение имени файла на URL, вы изменили ассоциацию файла, и, таким образом, содержимое файла будет интерпретироваться Internet Explorer. Если он правильно структурирован, он превратится в рабочий URL-файл Internet URL. В противном случае (например, оставив поле пустым и изменив расширение), вы получите страшную ошибку при попытке открыть его.

Фактический ярлык хранится в другом месте, а не в самом файле, и поэтому исходный файл можно оставить пустым в виде 0-байтового файла, как только будет выполнена первоначальная интерпретация и преобразование типа файла. Файл будет служить только для указания на ярлык данных. Данные ярлыка - это поле «Веб-документ», которое хранится в файловой системе NTFS.

Весь бизнес в том, что он не может повторно использовать имя файла или то, как вы получаете этот глобус как значок файла (или значок иконки, или значок браузера), это связано с тем, как Internet Explorer кэширует веб-контент. Так что в действительности, когда вы дважды щелкаете по одному из этих файлов URL, и у вас установлен Firefox в качестве веб-браузера по умолчанию, это действительно не Firefox, который открывает URL; это Internet Explorer! Через некоторое внутреннее волшебство Windows Internet Explorer затем передает URL в Firefox, Firefox запускает и загружает URL, и вы видите свет (страница). Вы остаетесь гордиться тем, что не используете Internet Explorer.

Чтобы удалить любой кэш, который не позволяет переименовать файл, или заставить Internet Explorer повторно интерпретировать один и тот же файл с тем же именем еще раз (как после изменения его содержимого), необходимо очистить некоторые из папок кэширования. Это называется TIF или временными интернет-файлами.

  1. Откройте% localappdata%\Microsoft\Windows\INetCache
  2. Выбрать все файлы (ctrl+a).
  3. Удалить (del)!
  4. да
  5. Попробуйте дважды щелкнуть по измененному файлу URL. Он должен работать.

Это должно работать для Windows 8, 8.1 и 10. Вы найдете эту папку в других местах в предыдущих версиях Windows. В Windows 7 я думаю, что он находится в том же месте, что и выше, до уровня Windows. Там должна быть папка, которая называется Временные файлы Интернета.

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