我目前正在开发一个程序来立即清除Windows 开始 - > 运行对话框中出现的先前运行命令列表.通过删除HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU密钥清除此列表的过程已有详细记录 ; 但是,在这些更改生效之前,似乎有必要执行以下操作之一:
重新启动计算机
选择开始 - > 关机,然后选择取消.
这些都不是我想要完成的任务的理想选择:#1对用户极具破坏性,#2似乎需要额外的用户交互.
有没有人知道如何立即(和编程)强制重新加载此信息而无需任何用户交互,同时还最大限度地减少用户其他活动的中断? 我想在执行我的程序后立即清除用户的运行历史记录,而不需要他们做任何进一步的操作(例如使用上面#2中的"关闭" - >"取消"技巧)或强制重新启动.
或者,从不同角度解决问题:单击开始 - > 关机 - > 取消时,Windows资源管理器重新加载RunMUI密钥. 有没有办法在没有用户选择关机然后取消的情况下强制进行类似的重新加载?
在选择Shutdown然后选择Cancel时使用procmon监视explorer.exe状态.我看到Explorer写入RunMRU键,但无法确定是什么触发了它.
许多谷歌搜索"重新加载runmru而不重启".大多数结果仍然推荐上面的方法#1,尽管有一些建议#2.
有限的MSDN API考试.该RegFlushKey通话看起来是有希望的,但我没有以前使用过,所以我不知道这是否适用于注册不同进程缓存的信息.
任何建议或其他信息将不胜感激.