如何使用C#访问Windows 7中的“最近的位置”列表

时间:2011-05-03 02:12:07

标签: c# winapi windows-7

Windows 7在资源管理器中引入了Recent Places特殊文件夹,向您显示最近访问过的文件夹。此文件夹仅包含文件夹,即不包含文件。

这与Environment.SpecialFolder.Recent文件夹不同,据我所知,CSIDLKNOWNFOLDER都没有列出“最近的地点”文件夹。

如何使用C#获取Recent Places特殊文件夹的内容?

1 个答案:

答案 0 :(得分:1)

由于似乎没有直接访问这个'虚拟文件夹',我使用了一种解决方法。

string[] GetRecentPlaces()
{
    var places = new List<string>();
    foreach (var lnk in Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.Recent), "*.lnk"))
    {
        var path = LinkHelper.ResolveShortcut(lnk);
        if (Directory.Exists(path))
        {
            places.Add(path);
        }
    }
    return places.ToArray();
}

其中LinkHelper取自此答案:How to resolve a .lnk in C#

编辑:从使用文件属性更改为Directory.Exists,因为FileAttribute.Directory标志似乎并不总是正确设置。