我目前正在开发一个程序来立即清除Windows Start 中显示的先前运行命令列表 - > 运行对话框。通过删除 HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ RunMRU 键清除此列表的过程为well documented;但是,在这些更改生效之前,似乎有必要执行以下操作之一:
这些都不适合我要完成的任务:#1对用户极具破坏性,#2似乎需要额外的用户互动。
有没有人知道如何立即(并以编程方式)强制重新加载此信息而无需任何用户交互,同时还最大限度地减少对用户其他活动的干扰? 我希望用户的运行历史记录在执行我的程序后立即清除,没有需要他们的任何进一步操作(例如使用“关机” - >;取消“上面#2中的技巧”或强制重启。
或者,从不同角度解决问题:点击开始 - > 关机 - > 取消,Windows资源管理器重新加载RunMUI密钥。 有没有办法强制进行类似的重新加载而无需用户选择关机然后取消?
非常感谢任何建议或其他信息。
答案 0 :(得分:1)
你试过ccleaner吗?
答案 1 :(得分:0)
对你的问题不是一个完整的答案,但我确实找到了第三种方法来触发从PC Mag中的article清除运行命令。
杀死explorer.exe然后重新启动它也将在注册表修改后清除运行列表。
答案 2 :(得分:0)
我有一个讨厌的黑客给你。以编程方式显示窗口,立即隐藏它(以编程方式)并单击取消(好吧,你猜对了,编程)。
您可能会尝试寻找图标缓存刷新API或其他,如果他们有像您正在寻找的副作用,我不会太惊讶。
答案 3 :(得分:0)
我见过实际可行的实例,即使F5键不起作用?试试这个,ctrl> alt>删除然后转到任务管理器,进程选项卡...结束explorer.exe。然后单击文件新任务并键入explorer.exe,然后检查...这样做有效吗?
答案 4 :(得分:0)
Windows XP
这将调用Windows API函数,该函数刷新explorere.exe任务栏进程并清除列表(无需注册表编辑)。
答案 5 :(得分:0)
据我所知,它依赖于explorer.exe进程,该进程托管开始菜单/任务栏/桌面被关闭并重新打开。我知道没有“干净”的方式来做这件事。
如果确实需要在没有用户交互的情况下执行此操作,则需要关闭所有 explorer.exe进程并重新启动。
这是一个基本的C#程序来做到这一点;
using System.Diagnostics;
Process[] procs = Process.GetProcessesByName("explorer");
foreach (Process proc in procs)
{
proc.Kill();
}
Process.Start("explorer.exe");
请注意,这将关闭所有打开的“Windows资源管理器”窗口,之后可能会或可能不会打开其他“Windows资源管理器”。
我刚刚在Windows XP 32bit上测试过,它确实清除了Run命令缓存。
答案 6 :(得分:-4)
HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ RunMRU \