Поскольку прямого доступа к этой «виртуальной папке», по-видимому, нет, я использовал обходной путь.
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 #
РЕДАКТИРОВАТЬ: изменено с использования атрибутов файла на Directory.Exists, так как флаг FileAttribute.Directory, кажется, не всегда установлен правильно.