【发布时间】:2008-09-25 17:35:33
【问题描述】:
我目前正在开发一个程序,以立即清除 Windows 开始 -> 运行 对话框中出现的先前运行命令列表。通过删除 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU 键清除此列表的过程是well documented;但是,在这些更改生效之前,似乎有必要执行以下操作之一:
- 重启电脑
- 选择开始 -> 关闭,然后选择取消。
对于我要完成的任务,这两种方法都不理想:#1 对用户极具破坏性,而#2 似乎需要额外的用户交互。
是否有人知道如何立即(并以编程方式)强制重新加载此信息而不需要任何用户交互,同时尽量减少对用户其他活动的干扰? 我希望在执行我的程序后立即清除用户的运行历史记录, 不需要他们采取任何进一步的操作(例如使用“关闭”->“取消”上面 #2 中的技巧)或强制重启。
或者,从不同的角度解决问题:单击开始 -> 关闭 -> 取消时,Windows 资源管理器会重新加载RunMUI 键。 有没有办法在不让用户选择关闭然后取消的情况下强制进行类似的重新加载?
我已经尝试过的事情:
- 使用procmon 监控 explorer.exe 状态,同时选择关闭,然后选择取消。我看到 Explorer 正在写入 RunMRU 键,但无法确定是什么触发了此操作。
- Google 进行了大量搜索,类似于“重新加载 runmru 而无需重新启动”。大多数结果仍然推荐上面的方法 #1,尽管少数结果建议 #2。
- 有限的 MSDN API 检查。 RegFlushKey 调用看起来很有希望,但我以前从未使用过它,所以我不知道它是否适用于不同进程缓存的注册表信息。
任何建议或其他信息将不胜感激。
【问题讨论】:
标签: windows registry windows-explorer privacy