清除Windows“运行”对话框历史记录而不重新启动

时间:2008-09-25 17:35:34

标签: windows registry windows-explorer privacy

我目前正在开发一个程序来立即清除Windows Start 中显示的先前运行命令列表 - > 运行对话框。通过删除 HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ RunMRU 键清除此列表的过程为well documented;但是,在这些更改生效之前,似乎有必要执行以下操作之一:

  1. 重新启动计算机
  2. 选择开始 - > 关闭,然后选择取消
  3. 这些都不适合我要完成的任务:#1对用户极具破坏性,#2似乎需要额外的用户互动。

    有没有人知道如何立即(并以编程方式)强制重新加载此信息而无需任何用户交互,同时还最大限度地减少对用户其他活动的干扰我希望用户的运行历史记录在执行我的程序后立即清除,没有需要他们的任何进一步操作(例如使用“关机” - >;取消“上面#2中的技巧”或强制重启。

    或者,从不同角度解决问题:点击开始 - > 关机 - > 取消,Windows资源管理器重新加载RunMUI密钥。 有没有办法强制进行类似的重新加载而无需用户选择关机然后取消

    我已经尝试过的事情:

    • 在选择关机,然后选择取消时,使用procmon监控explorer.exe状态。我看到Explorer写入RunMRU键,但无法确定是什么触发了它。
    • 许多谷歌搜索“重新加载runmru而不重启”。大多数结果仍然推荐上面的方法#1,尽管有一些建议#2。
    • 有限的MSDN API检查。 RegFlushKey调用似乎很有希望,但我以前从未使用它,因此我不知道它是否适用于不同进程缓存的注册表信息。

    非常感谢任何建议或其他信息。

7 个答案:

答案 0 :(得分:1)

你试过ccleaner吗?

http://www.ccleaner.com/

答案 1 :(得分:0)

对你的问题不是一个完整的答案,但我确实找到了第三种方法来触发从PC Mag中的article清除运行命令。

杀死explorer.exe然后重新启动它也将在注册表修改后清除运行列表。

答案 2 :(得分:0)

我有一个讨厌的黑客给你。以编程方式显示窗口,立即隐藏它(以编程方式)并单击取消(好吧,你猜对了,编程)。

您可能会尝试寻找图标缓存刷新API或其他,如果他们有像您正在寻找的副作用,我不会太惊讶。

答案 3 :(得分:0)

我见过实际可行的实例,即使F5键不起作用?试试这个,ctrl> alt>删除然后转到任务管理器,进程选项卡...结束explorer.exe。然后单击文件新任务并键入explorer.exe,然后检查...这样做有效吗?

答案 4 :(得分:0)

Windows XP

  1. 右键单击任务栏
  2. 属性菜单选项
  3. “开始菜单”标签
  4. 自定义按钮
  5. 程序窗格
  6. 清除列表
  7. 点击OK
  8. 这将调用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 \