什么使得 Internet Shortcut 文件如此特别?

什么使得 Internet Shortcut 文件如此特别?

当我将 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. .. 出现提示时单击“是”,表示接受丢失文件类型关联的风险。

1

现在,我希望能够通过双击文件图标在我的默认 Web 浏览器中打开此文件。但是不行,它不能这样工作。相反,我收到了一条错误消息。

2

此 Internet 快捷方式的目标“”无效。请转到 Internet 快捷方式属性表并确保目标正确。

到底是什么意思target ""

通过搜索本网站,我发现其他一些用户在使用 Internet 快捷方式文件时也遇到了这种或类似的问题,有些人甚至尝试创建“跨平台”Internet 快捷方式文件。我不明白为什么这是一件如此麻烦的事情。

它应该只是一个带有 URL 地址的简单文件,可以在 Web 浏览器中打开。那么这些“Internet 快捷方式”文件有什么特别之处呢?是什么让它们如此有效呢?当我将我的文件与原始文件进行比较时,它们看起来完全相同。那么问题到底出在哪里呢?

更新


这里有一些有趣的发现。“目标”一词可能表示 URL,而“Internet 快捷方式属性表”很可能是指文件属性对话框中的“Web 文档”选项卡。如果我没记错的话,它在以前的 Windows 版本中被称为“Internet 快捷方式”(至少在 Windows 98 中)。从那时起,它似乎已被重命名为 Web 文档。

还有更多!从下面的截图可以看出,我的文件与原始文件共享相同的 SHA1 摘要。但它不共享相同的文件图标,也没有“Web 文档”选项卡。

原始文件属性 新文件属性 原始文件 sha1 新文件 sha1

更棒的是,当我将新文件重命名为以大写字母开头时,它就变成了一个可用的 Internet 快捷方式文件。就是这样!它开始工作了。如果我再次将其重命名为以小写字母开头,它就会停止工作……再次。不要相信我的话,看看下面的截图。

具有新名称的新文件属性

它还有助于以下划线、破折号、点、括号、花括号、方括号、等号、数字符号、感叹号等开头的文件名。它甚至可以用空白纸张图标正确替换地球图标。将其重命名为除或之外的任何名称test都会Test真正改变图标。

但是,是什么原因导致它出现这样的行为或错误行为呢?例如,文件名以大写字母开头有什么关系呢?常规文件没有这样的限制……

更新 2


如果新文件的名称以大写字母开头,更改扩展名之前, 和然后被重命名因此它以小写字母开头...那么它仍然有效!

所以如果你像这样去做,它就会起作用:

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

A b

更新 3


test.url 文件的原始问题很可能发生在上述第 4 步。我最初在另一个磁盘上创建了一个名为 test.txt 的文件,并将其重命名为 test.url。这是在我创建第二个同名文件之前,该文件位于系统磁盘的桌面文件夹中(如上图所示)。我不记得了,但很可能我最初创建了一个文件,更改了扩展名,然后粘贴了目标 URL 并保存了它,并希望它通过简单的双击就可以工作。与创建文件、粘贴目标 URL 和然后更改名称扩展。

答案1

我觉得我找到了一些线索。正如我所怀疑的那样,Windows 以某种方式内化(记住)了您之前用于 Internet 快捷方式文件的名称。我使用 Windows 10 TP 进行了一些实验。我将尝试总结迄今为止我所学到的知识。下面的屏幕截图显示了我一直在尝试的文件的图标和名称。

图标

我将按照编号、从左到右或按名称来引用它们。

  • 1 号图标是通过将 Firefox 的图标拖放到桌面创建的。我使用这个图标作为参考。它正在运行。
  • 2、3 和 6 号文件是手动创建的空白文本文件。它们被留空,扩展名从 txt 更改为 url。这些是不是工作:它们导致错误出现。

    错误

  • 4号是手动创建的空白文本文件,然后把1号的内容粘贴进去,扩展名就从txt改成了url,可以正常运行。
  • 5 号是手动创建的空白文本文件。其文件类型名称和目标 URL 是手动输入的。它正在运行。
  • 更改文件名(不包括扩展名)会以两种方式之一影响文件的功能(无论是否实际起作用)。

1:如果在启用文件之前正确定义了文件内容(通过设置 URL 扩展名),则文件名称更改不会对其产生影响。更改前文件可以正常工作,更改后文件仍可以正常工作。

2:如果文件的内容是不是在启用它之前定义(例如空白文件),它将不是受名称更改的影响。仅更改名称不会有帮助。以前没有用,更改后也不会有用。此外!如果您决定更改文件名而没有正确定义内容(或将其留空),然后稍后再回来添加正确的 URL 定义(请继续阅读以了解解释),那么新文件名稍后将变得无法使用。

  • 更改文件内容会以两种方式之一影响文件的功能。

1:如果文件内容之前已正确定义,则文件仍将像以前一样工作。但对文件所做的所有更改都将被忽略。事实上,所有内容都可以删除,文件仍将工作。要提交任何更改,必须使用新文件名保存文件,该文件名必须从未使用过。字母大小写很重要,因此对文件进行更改测试网址并将其保存为测试.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 地址)和文件类型名称(Internet 快捷方式)。
  2. 已使用的名称不能重新用于不同的目标 URL。即使永久删除原始文件也不行。

更新


看来,在 Internet Explorer 中打开文件一次(如果您使用的是 Firefox 或其他第三方浏览器)可能会修复损坏的 URL 文件。我曾在装有 IE 版本 11 的 Windows 8.1 上看到过这种情况。但如前所述,在 IE 中打开 URL 文件内容之前,需要正确定义 URL 文件内容。然后,IE 将重新解释内容,甚至添加一个漂亮的图标作为文件图标,通过添加任何缺失的“Web 文档”属性来修复文件。但是,它并没有修复我的 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. 重启

来源:微软(KB936881)

完成后,我的 test.url 文件最后开始工作,地球图标变成了 Firefox 图标(见相关屏幕截图)。此修复最初适用于 XP、Server 2003 和 Vista。但显然它也适用于 Windows 8.1(未在 Windows 10 上测试)。

Microsoft KB 文章中给出了导致此错误的原因,但它确实说明了以下内容。

如果 Windows shell 在创建 Internet 快捷方式文件的过程中收到通知,则会出现此问题。此通知是在文件完全写入磁盘之前收到的。

它没有明确说明“通知”的含义。


正如我所怀疑的,Windows 正在使用一些 Internet Explorer 组件来解释这些 Internet 快捷方式 (URL) 文件。因此,您在该文本文件中输入的任何内容都仅用于初始解释。一旦将文件扩展名更改为 URL,就更改了文件关联,因此文件内容将被 Internet Explorer 解释。如果结构正确,它将把它变成一个有效的 URL Internet 快捷方式文件。否则(例如将其留空并更改扩展名),当您尝试打开它时,您将收到可怕的错误。

实际的快捷方式存储在其他地方,而不是文件本身,因此,一旦完成初始解释和文件类型转换,原始文件就可以留空,成为 0 字节文件。该文件仅用于指向快捷方式数据。快捷方式数据是存储在 NTFS 文件系统中的“Web 文档”字段。

整个问题,比如无法重复使用文件名,或者将地球图标作为文件图标(或网站图标或浏览器图标),都与 Internet Explorer 缓存 Web 内容的方式有关。因此,实际上,当您双击其中一个 URL 文件,并将 Firefox 设置为默认 Web 浏览器时,实际上并不是 Firefox 打开了 URL,而是 Internet Explorer 打开了 URL!Internet Explorer 通过一些内部 Windows 魔法将 URL 传递给 Firefox,Firefox 启动并加载 URL,然后您会看到指示灯 (你会为自己不使用 Internet Explorer 而感到自豪。

要删除任何阻止您重命名文件的缓存,或强制 Internet Explorer 再次重新解释具有相同名称的同一文件(例如在修改其内容后),您需要清除一些缓存文件夹。这称为 TIF 或临时 Internet 文件。

  1. 打开 %localappdata%\Microsoft\Windows\INetCache
  2. 选择所有文件(ctrl+a)。
  3. 刪除(del)!
  4. 是的
  5. 现在尝试双击您修改后的 URL 文件。它应该可以工作。

这应该适用于 Windows 8、8.1 和 10。您会在以前的 Windows 版本中的其他位置找到此文件夹。在 Windows 7 中,我认为它位于与上述相同的位置,直到 Windows 级别。应该有一个名为 Temporary Internet Files 的文件夹。

相关内容