C# 如何访问.URL文件中的URL和书签标题?

C# 如何访问.URL文件中的URL和书签标题?,c#,.net,internet-explorer,url,favorites,C#,.net,Internet Explorer,Url,Favorites,我正在使用.NET2.0VisualStudio2005C 下面的代码从包含bookmarked.url文件的目录中获取IE收藏夹(书签)的文件名 范例 ../users/favorites/blah.url 但我真正想要的是文件中带有书签的URL 当检查文件属性时,在web文档选项卡中,它显示文件名和URL 如何从C#访问它 代码 //the code below just get String like "..../users/favorites/blah.url" //call the

我正在使用.NET2.0VisualStudio2005C

下面的代码从包含bookmarked.url文件的目录中获取IE收藏夹(书签)的文件名

范例

../users/favorites/blah.url

但我真正想要的是文件中带有书签的URL

当检查文件属性时,在web文档选项卡中,它显示文件名和URL

如何从C#访问它

代码

 //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);
       }
    }
}
//下面的代码只得到字符串“…/users/favorites/blah.url”
//使用文件夹路径调用该方法:
//GetFavoriteFiles(Environment.GetFolderPath(Environment.SpecialFolder.Favorites));
私有列表favFiles=新列表();
私有void GetFavoriteFiles(字符串文件夹)
{
字符串[]favs=Directory.GetFiles(文件夹);
favFiles.AddRange(favs);
String[]folders=Directory.GetDirectories(文件夹);
如果(文件夹!=null)
{
foreach(文件夹中的字符串)
{
获取收藏夹文件;
}
}
}

我在记事本++中打开了一个
.url
,这就是我找到的。注意,这是在IE8中生成的。 详细查看
.url
(internet快捷方式)文件的格式


您应该能够使用basic
StreamReader
IO轻松解析此文件。

当前
.url
文件的格式是,并且可以在任何操作系统更新中更改。解析这些文件的正确方法是通过,使用
IUniformResourceLocator
IPropertyStorage
。我刚刚将该功能添加到,您可以从(Apache2.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);

哦这是我首先应该做的,谢谢,我会尝试一下。请注意,此格式是一个实现细节,不能保证保持原样。有关用于解析internet快捷方式的正确API,请参阅我的答案。如果此答案引用了名称空间,并提供了有关使用代码的内容和原因的更多信息,我非常希望得到此答案。@Chris我链接到了特定的MSDN文章,详细介绍了所有与internet快捷方式相关的COM信息。我还解释了为什么首选此方法,即当前INI格式是一种实现细节,可以在任何时候更改,从而使旧的解析代码变得无用。最后,我添加了一个链接,指向可以按原样获取和使用的开放源代码,几乎没有许可证限制,甚至还提供了一个小示例,说明如何使用它。你还能问什么?
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);