web-dev-qa-db-ja.com

インターネットショートカットファイルが特別な理由は何ですか?

Firefoxからディスクにショートカットを保存すると、テキストまたは16進エディターで表示したときの内容になります。

[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

このインターネットショートカットのターゲット ""は無効です。インターネットショートカットのプロパティシートに移動し、ターゲットが正しいことを確認します。

target ""とは正確にはどういう意味ですか?

このサイトで検索すると、他の何人かのユーザーがインターネットショートカットファイルでこの問題または同様の問題に遭遇し、「クロスプラットフォーム」のインターネットショートカットファイルを作成しようとしたユーザーもいることがわかります。私にはわからないのは、そもそもなぜこれがそんなに苦痛なのかということです。

これは、Webブラウザで開くURLアドレスを持つ単純なファイルであると想定されています。では、これらの「インターネットショートカット」ファイルが特別な理由は何でしょうか。何が彼らをカチカチさせるのですか?ファイルを元のファイルと比較すると、同じように見えます。では、問題はどこにあるのでしょうか。

更新


ここにいくつかの興味深い発見があります。 「ターゲット」という言葉はおそらくURLを意味し、「インターネットショートカットプロパティシート」はおそらくファイルプロパティダイアログボックスの「Webドキュメント」タブを指します。 正しく覚えていれば、以前のバージョンのWindows(少なくともWindows 98では)では「インターネットショートカット」というタイトルでした。それ以来、Webドキュメントに名前が変更されたようです。

それだけではありません!以下のスクリーンショットからわかるように、私のファイルは元のファイルと同じSHA1ダイジェストを共有しています。ただし、同じファイルアイコンを共有したり、[Webドキュメント]タブを共有したりすることはありません。

original file propertiesnew file propertiesoriginal file sha1new file sha1

さらに、新しいファイルの名前を大文字で始まるように変更すると、機能するインターネットショートカットファイルになります。ちょうどそのように!それはちょうど働き始めます。小文字で始まるように名前を変更すると、機能しなくなります...再び。私の言葉を信じないでください。下のスクリーンショットを見てください。

new file properties with new name

また、ファイル名をアンダースコア、ダッシュ、ポイント、括弧、中括弧、角括弧、等号、番号記号、感嘆符などで始めるのにも役立ちます。地球のアイコンを白紙の紙のアイコンに適切に置き換えます。名前をtestまたはTest以外に変更すると、アイコンが実際に変更されます。

しかし、何が原因でこのように動作したり、誤動作したりしますか?たとえば、ファイル名が大文字で始まることが重要なのはなぜですか?通常のファイルにはそのような制限はありません...

アップデート2


新しいファイルの名前が大文字で始まる場合、名前拡張子を変更する前に名前が変更されます小文字で始まるように...それでも機能します!

したがって、このように実行すると、機能します。

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

ab

アップデート3


Test.urlファイルの元の問題は、上記の手順4で発生した可能性があります。最初に別のディスクにtest.txtという名前のファイルを作成し、名前をtest.urlに変更しました。これは、デスクトップフォルダーのシステムディスクに同じ名前の2番目のファイルを作成する前のことです(上記のとおり)。思い出せませんが、最初にファイルを作成し、名前拡張子を変更してから、ターゲットURLに貼り付けて保存し、ダブルクリックするだけで機能することを期待している可能性があります。ファイルを作成するのとは対照的に、ターゲットURLを貼り付け、次に名前拡張子を変更します。

7
Samir

私は何かを得たと思います。私が推測したように、Windowsは、以前にインターネットショートカットファイルに使用した名前を何らかの形で内部化(記憶)します。私はWindows10TPを使用していくつかの実験を行いました。これまでに学んだことをまとめてみます。以下のスクリーンショットは、私が実験してきたファイルのアイコンと名前を示しています。

icons

番号、左から右、または名前で参照します。

  • ナンバー1は、ファビコンをデスクトップにドラッグアンドドロップすることでFirefoxから作成されました。これを参考にしました。動作しています。
  • 番号2、3、および6は、空白のテキストファイルとして手動で作成されました。それらは空のままにされ、それらの名前拡張子はtxtからurlに変更されました。これらは not 動作しています:エラーが表示されます。

    error

  • 番号4は、空白のテキストファイルとして手動で作成されました。次に、番号1のコンテンツが貼り付けられ、名前の拡張子がtxtからurlに変更されました。動作しています。
  • 番号5は、空白のテキストファイルとして手動で作成されました。そのファイルタイプ名とターゲットURLは手動で入力されました。動作しています。
  • ファイル名(拡張子を除く)を変更すると、2つの方法のいずれかでファイルの機能(実際に機能するかどうか)に影響します。

1:ファイルを有効にする前に(URL拡張子を設定して)ファイルの内容が適切に定義されていれば、名前の変更による影響を受けません。変更前は機能し、変更後も機能します。

2:ファイルの内容が有効にする前に定義されていない(空白ファイルなど)の場合、名前の変更による影響を受けない。名前を変更するだけでは役に立ちません。以前は機能せず、変更後も機能しません。 さらに!コンテンツを適切に定義せずに(または空白のままにして)ファイル名を変更することにした場合、新しいファイル名は後で使用できなくなり、後で戻ってきます適切なURL定義を追加します(説明を読んでください)。

  • ファイルの内容を変更すると、2つの方法のいずれかでファイルの機能に影響します。

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/

結論

ここで学ぶべき2つの重要な事実があります。

  1. ファイルには、名前拡張子を変更(または追加)する前に、有効な「ターゲット」(URLアドレス)とファイルタイプ名(インターネットショートカット)が含まれている必要があります。
  2. 使用された名前を別のターゲットURLに再利用することはできません。元のファイルを完全に削除した後でも

更新


Internet Explorerでファイルを開くと(Firefoxまたは別のサードパーティのブラウザを使用している場合)、壊れたURLファイルを修正する効果があるようです。ここでWindows8.1のIEバージョン11で発生するのを見てきました。しかし、前に説明したように、IEで開く前にURLファイルの内容を適切に定義する必要があります。IEはコンテンツを再解釈し、Niceファビコンをファイルアイコンとして追加し、不足している「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というタイトルの新しいdwordを作成します
  6. iexplore.exeの値を1に設定します
  7. リブート

出典: Microsoft(KB936881)

その後、test.urlファイルfinallyが機能し始め、地球の代わりにFirefoxアイコンが表示されました(問題のスクリーンショットを参照)。この修正は元々、XP、Server 2003、およびVistaに適用されていました。しかし、どうやらそれはWindows 8.1でも動作します(Windows 10ではテストされていません)。

このエラーの原因(Microsoft KBの記事に記載)はあまり詳しくありませんが、次のように書かれています。

この問題は、インターネットショートカットファイルを作成するプロセス中にWindowsシェルが通知を受信した場合に発生します。この通知は、ファイルが完全にディスクに書き込まれる前に受信されます。

「通知」の意味を正確に述べているわけではありません。


私が推測したように、Windowsはこれらのインターネットショートカット(URL)ファイルを解釈するためにいくつかのInternetExplorerコンポーネントを使用しています。したがって、そのテキストファイルに入力したコンテンツは、最初の解釈にのみ使用されます。ファイル名拡張子をURLに変更すると、ファイルの関連付けが変更されるため、ファイルの内容はInternetExplorerによって解釈されます。適切に構成されている場合は、有効なURLインターネットショートカットファイルに変換されます。それ以外の場合(空のままにして拡張子を変更するなど)、開こうとすると恐ろしいエラーが発生します。

実際のショートカットはファイル自体ではなく他の場所に保存されるため、最初の解釈とファイルタイプの変換が完了すると、元のファイルは0バイトファイルとして空のままにすることができます。このファイルは、ショートカットデータを指すだけの目的でのみ機能します。 NTFSファイルシステム内に格納されている「Webドキュメント」フィールドであるショートカットデータ。

ファイル名を再利用できないというビジネス全体、またはその地球上のものをファイルアイコン(またはファビコン、またはブラウザアイコン)として取得する方法は、InternetExplorerがWebコンテンツをキャッシュする方法と関係があります。したがって、実際には、これらのURLファイルの1つをダブルクリックし、FirefoxをデフォルトのWebブラウザーとして設定している場合、URLを開くのはFirefoxではありません。 Internet Explorerです! Internet ExplorerがURLをFirefoxに渡すのは、Windowsの内部ウィザードを介して行われ、Firefoxが起動してURLをロードすると、ライト(ページ)が表示されます。 InternetExplorerを使用しないことに誇りを感じています。

ファイルの名前を変更できないキャッシュを削除したり、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レベルまで、上記と同じ場所にあると思います。一時的なインターネットファイルと呼ばれるフォルダがあるはずです。

8
Samir