清洁Windows 7开始菜单MRU列表

时间:2011-01-13 09:23:57

标签: windows-7 registry startmenu mru

有没有办法以编程方式从Windows 7开始菜单中清除最近启动的应用程序?

我正在寻找一些要删除的注册表项和/或文件,以便删除Winodws 7开始菜单中的相应项目。

3 个答案:

答案 0 :(得分:2)

SHAddToRecentDocs(SHARD_PIDL,NULL)是用于清除最近文档的文档化方法,而不是像surya建议的那样搞乱注册表。

由于您的问题包含“应用程序”一词,我假设您实际上是指应用程序列表,并且没有真正的方法可以自编程地修改该列表"belongs" to the user

如果你想使用未记录的hacky路由,可以使用获取特定.lnk的IContextMenu并调用“从此列表中删除”命令。

在XP上,开始菜单应用程序使用情况存储在HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ UserAssist {75048700-EF1F-11D0-9888-006097DEACF9}中,但资源管理器将缓存这些条目,因此您不能只删除关键是不先杀死资源管理器。

答案 1 :(得分:0)

现在这是我的问题的解决方案:

我清除了注册表项下的值

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}\Count

然后我执行了以下PInvoke来刷新Explorer.exe的缓存:

C#:

using System.Runtime.InteropServices;
[DllImport("shell32.dll")]
static extern void SHChangeNotify(int wEventId, int uFlags, IntPtr dwItem1, IntPtr wItem2);

private const int SHCNE_ASSOCCHANGED = 0x08000000;
private const int SHCNF_IDLIST = 0x0000;

private void ClearCache()
{
 SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero);
}

此致 鲍里斯

答案 2 :(得分:-1)

在注册表中,删除不必要的内容。关键是HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs