以编程方式访问 Windows 8.1 中最常用的应用程序

Programmatically access most frequently used apps in Windows 8.1

Windows 8.1 开始菜单提供了一个应用列表,可以按最常用的方式排序(Windows 按钮 > 向下箭头 > 应用:按最常用)。有没有一种方法可以在 C# 中以编程方式按此顺序获取这些应用程序的列表?如果不按此顺序,至少要列出 and/or 中度使用的应用程序,如 Windows 8.1 开始菜单中所示?

答案可能是肯定的,虽然不推荐(也不容易)。

Raymond Chen 在他的博客 post, "Why is there no programmatic access to the Start menu pin list?". It talks about a different issue on Windows XP, but I think the moral of the story applies here as well, that this information is too easily abused and thus no public API is available. Whosebug also has a question that addresses the MFU list directly (see this question) 中描述得很清楚,答案是你不应该这样做。

问题是,您看到的 MFU 列表存储在注册表的 UserAssist 部分,并且它的值是加密的(以前是 ROT13,但我不知道 8.1)。 Didier Stevens 编写了一个解密值的 GUI(参见 blog post),但自从 8.1 出来后就没有更新过。对于它的价值,作者提供了源代码,但它是针对旧版本的。如果您可以进行密码分析,您可能可以扩展他的代码以使其支持 8.1。