【问题标题】:How can I access the Recent Places list in Windows 7 using C#如何使用 C# 访问 Windows 7 中的最近地点列表
【发布时间】:2011-05-03 02:12:07
【问题描述】:

Windows 7 在资源管理器中引入了“最近地点”特殊文件夹,可显示最近访问的文件夹。此文件夹仅包括文件夹,即不包括文件。

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

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

【问题讨论】:

  • 你指的是C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Recent吗?
  • 不,我的意思是资源管理器中的最近地点功能(通常在左上角的桌面按钮下方,收藏夹下)
  • 由于某种原因我看不到它;(。不管怎样,你有没有看一下我给你的路径,看看两个地方是否包含相同的快捷方式?
  • @OscarMederos:也许吧。最近的列表包含文件和文件夹,而最近的地方只有目录,但我想我可以手动过滤并只获取目录的链接。会尝试。只是想可能有一个新的专用特殊文件夹。
  • 它肯定是一个虚拟文件夹。 .NET 不太支持

标签: c# winapi windows-7


【解决方案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 as FileAttribute.Directory 标志似乎并不总是正确设置。

【讨论】:

    猜你喜欢
    • 2010-10-01
    • 1970-01-01
    • 2021-01-23
    • 2016-09-09
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多