2011-06-22 4 views
2

私は.NET 2.0 Visual Studio 2005 C#を使用しています。.URLファイルのURLとブックマークタイトルにアクセスするには?

ブックマークする.urlファイルが含まれている以下のコードディレクトリからIEのお気に入り(ブックマーク)のファイル名を取得します

../users/favorites/blah.url

しかし、私が本当に欲しいのは、そのファイルの中にブックマークされたURLです。

ファイルプロパティをチェックすると、Webドキュメントタブにファイル名とURLが表示されます。

C#からどのようにアクセスできますか?

CODE

//the code below just get String like "..../users/favorites/blah.url" 
//call the method with the folder path: 
//GetFavoriteFiles(Environment.GetFolderPath(Environment.SpecialFolder.Favorites)); 


private List<String> favFiles = new List<String>(); 

private void GetFavoriteFiles(String folder) 
{ 
    String[] favs = Directory.GetFiles(folder); 
    favFiles.AddRange(favs); 
    String[] folders = Directory.GetDirectories(folder); 

    if(folders != null) 
    { 
     foreach(String s in folders) 
     { 
      GetFavoriteFiles(s); 
     } 
    } 
} 

答えて

5

私はメモ帳で.urlを開け++、これは私が見つけたものです。これはIE8で生成されたことに注意してください。 This pageには、.url(インターネットショートカット)ファイルの形式が詳細に記載されています。

[DEFAULT] 
BASEURL=http://www.google.com.au/ 
[{000214A0-0000-0000-C000-000000000046}] 
Prop3=19,2 
[InternetShortcut] 
URL=http://www.google.com.au/ 
IDList= 
IconFile=http://www.google.com.au/favicon.ico 
IconIndex=1 

これは、基本的にStreamReader IOを使用して簡単に解析できます。

+0

ああ!私が最初にやったはずのことだから、お試しいただきありがとうございます。 –

+1

この形式は実装の詳細であり、そのまま使用することはできません。インターネットショートカットを解析するための適切なAPIについては私の答えを見てください。 –

5

.urlファイルの現在の形式はnot set in stoneであり、どのOSアップデートでも変更可能です。これらのファイルを解析する正しい方法はCLSID_InternetShortcut COM coclassで、IUniformResourceLocatorIPropertyStorageを使用します。私はちょうどTvGameLauncherにその機能を追加しました。あなたはInternetShortcut folder(Apache 2.0ライセンス)からコードを入手することができます。

使用例:

var shortcut = new InternetShortcutManaged(@"MyShortcut.url"); 

Console.WriteLine("URL: " + shortcut.Url); 
Console.WriteLine("Working dir: " + shortcut.WorkingDir); 
Console.WriteLine("Icon file: " + shortcut.IconFile); 
Console.WriteLine("Icon index: " + shortcut.IconIndex); 
Console.WriteLine("Name: " + shortcut.Name); 
Console.WriteLine("Description: " + shortcut.Description); 
Console.WriteLine("Comment: " + shortcut.Comment); 
+0

この回答に名前空間に関する参照があり、何をなぜ、なぜ使用したのかについてのより詳しい情報があれば、私はこの答えが本当に好きです。 –

+0

@Chris特定のMSDN記事にリンクし、すべてのインターネットショートカット関連のCOM情報を詳しく説明しました。私はまた、この方法が好まれる理由、すなわち現在のINI形式が、いつでも変更可能な実装の詳細であり、古い解析コードを役に立たなくする理由について説明しました。最後に、ライセンスの制限がほとんどなく、そのまま使用して使用できるオープンソースのコードへのリンクを追加しました。また、使用方法の正確なサンプルも提供しました。あなたはおそらくもっと尋ねることができますか? –

関連する問題