Как получить доступ к списку последних мест в Windows 7 с помощью C#

В Windows 7 появилась специальная папка "Недавние места" в проводнике, в которой отображаются недавно открытые папки. Эта папка включает только папки, то есть исключает файлы.

Это отличается от Environment.SpecialFolder.Recent папку, и, насколько я вижу, и CSIDL, и KNOWNFOLDER не перечисляют папку последних мест.

Как я могу получить содержимое специальной папки Recent Places с помощью C#?

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 взят из этого ответа: Как разрешить.lnk в C#

EDIT: изменено с использования атрибутов файла на Directory.Exists, так как флаг FileAttribute.Directory, кажется, не всегда установлен правильно.

Другие вопросы по тегам