Как получить доступ к списку последних мест в 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, кажется, не всегда установлен правильно.