Windows 8.1开始菜单提供了一个可以按最常用的应用程序排序的应用程序列表(Windows按钮>向下箭头>应用程序:按最常用)。有没有一种方法可以在C#中按的顺序以编程方式获得这些应用程序的列表?如果不是按此顺序,是否至少列出Windows 8.1开始菜单中显示的最常用和/或中等使用的应用程序列表?
答案可能是肯定的,你可以,尽管这并不推荐(也不容易)。
Raymond Chen在他的博客文章中非常清楚地描述了这一点;为什么没有对「开始」菜单引脚列表的编程访问&";。它谈到了Windows XP上的另一个问题,但我认为这个故事的寓意也适用于此,即这些信息太容易被滥用,因此没有公共的API可用。Stackoverflow还有一个问题,直接解决MFU列表(见这个问题),答案是你不应该这样做。
问题是,你看到的MFU列表存储在注册表的UserAssist部分,它的值是加密的(以前是ROT13,但我不知道8.1)。Didier Stevens写了一个GUI来解密这些值(见博客文章),但自8.1发布以来,它一直没有更新。就其价值而言,作者已经包含了源代码,但它是为旧版本准备的。如果你能进行密码分析,你可能会扩展他的代码,使其支持8.1。