Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不重新启动的情况下清除Windows“运行”对话框历史记录_Windows_Registry_Windows Explorer_Privacy - Fatal编程技术网

在不重新启动的情况下清除Windows“运行”对话框历史记录

在不重新启动的情况下清除Windows“运行”对话框历史记录,windows,registry,windows-explorer,privacy,Windows,Registry,Windows Explorer,Privacy,我目前正在编写一个程序,以立即清除Windows开始->运行对话框中显示的以前运行的命令列表。通过删除HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU密钥来清除此列表的过程如下:;但是,在这些更改生效之前,似乎有必要执行以下操作之一: 重新启动计算机 选择开始->关闭,然后选择取消。 这两种方法都不适用于我试图完成的任务:1对用户造成极大干扰,2似乎需要额外的用户交互 是否有人知道如何立即以编程

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

重新启动计算机 选择开始->关闭,然后选择取消。 这两种方法都不适用于我试图完成的任务:1对用户造成极大干扰,2似乎需要额外的用户交互

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

或者,从另一个角度来解决问题:单击开始->关闭->取消时,Windows资源管理器会重新加载RunMUI键。有没有一种方法可以在不让用户选择关机然后取消的情况下强制进行类似的重新加载

我已经尝试过的事情: 使用监视explorer.exe状态,同时选择“关机”,然后选择“取消”。我看到资源管理器正在写入RunMRU键,但无法确定是什么触发了此操作。 大量谷歌搜索都是在不重新启动的情况下重新加载runmru。大多数结果仍然推荐上面的方法1,尽管有一些建议2。 有限的MSDN API检查。这个调用看起来很有希望,但我以前从未使用过它,所以我不知道它是否会应用于不同进程缓存的注册表信息。
如果您有任何建议或其他信息,我们将不胜感激。

这不是您问题的完整答案,但我确实在PC Mag中找到了第三种触发清除运行命令的方法


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

HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\explorer\RunMRU\

我有一个很讨厌的黑客攻击。以编程方式显示窗口,以编程方式立即隐藏窗口,然后单击“取消”。您猜,是以编程方式


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

我见过它实际工作的实例,甚至F5键也不工作?尝试此操作,ctrl>alt>delete,然后转到任务管理器的“进程”选项卡…end explorer.exe。然后单击file new task并键入explorer.exe,然后检查…是否有效

windowsxp

右键单击任务栏 属性菜单选项 开始菜单选项卡 自定义按钮 程序窗格 清除列表 点击OK
这将调用一个Windows API函数,该函数刷新explorere.exe任务栏进程并清除列表,无需进行注册表编辑。

您尝试过ccleaner吗


据我所知,它依赖于托管“开始”菜单/任务栏/桌面的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 32位上测试了它,它确实清除了运行命令缓存。

你读过这个问题吗?他知道钥匙在哪里,探险家不会刷新它。对不起,如果我打扰了你,伙计!下次会注意的。你搞错了,他试图清除RUNMRU条目,而不是“开始”窗格上的程序快捷方式。