【发布时间】:2015-04-08 08:35:11
【问题描述】:
Windows 8.1 开始菜单提供可按最常用排序的应用列表(Windows 按钮 > 向下箭头 > 应用:按最常用)。有没有办法在 C# 中以编程方式按此顺序获取这些应用程序的列表?如果不是按此顺序排列,是否至少列出了 Windows 8.1 开始菜单中显示的最常用和/或中度使用的应用程序?
【问题讨论】:
标签: c# windows-8.1 mru
Windows 8.1 开始菜单提供可按最常用排序的应用列表(Windows 按钮 > 向下箭头 > 应用:按最常用)。有没有办法在 C# 中以编程方式按此顺序获取这些应用程序的列表?如果不是按此顺序排列,是否至少列出了 Windows 8.1 开始菜单中显示的最常用和/或中度使用的应用程序?
【问题讨论】:
标签: c# windows-8.1 mru
答案可能是肯定的,你可以,虽然不推荐(也不容易)。
Raymond Chen 在他的博文"Why is there no programmatic access to the Start menu pin list?" 中非常清楚地描述了这一点。它谈到了 Windows XP 上的另一个问题,但我认为这个故事的寓意也适用于此,即这些信息太容易被滥用,因此没有可用的公共 API。 Stackoverflow 也有一个直接解决 MFU 列表的问题(请参阅this question),答案是您不应该这样做。
问题是,您看到的 MFU 列表存储在注册表的 UserAssist 部分中,并且其值是加密的(以前是 ROT13,但我不知道 8.1)。 Didier Stevens 编写了一个用于解密这些值的 GUI(请参阅 blog post),但自 8.1 发布以来它一直没有更新。对于它的价值,作者已经包含了源代码,但它是针对旧版本的。如果您可以进行密码分析,您可能可以扩展他的代码以使其支持 8.1。
【讨论】: