如何在不重新启动explorer.exe的情况下刷新桌面?

如何在不重新启动explorer.exe的情况下刷新桌面?

我对注册表文件有足够的了解,我知道如何以及在何处通过脚本更改桌面位置。

我正在寻找一种方法,一旦注册表发生变化,就可以“刷新”(更新/重新加载/同步)桌面。

解决方案需要自动完成,即从脚本或程序运行,但是我不能也不想终止 explorer.exe 进程,因为这会对系统造成比预期更多的损害。

与答案相关(而非问题)的注释:

F5 刷新显然可以工作,但到目前为止,我能够使用自动脚本来使其工作。问题是我更改了环境变量值,而该值只是它的默认位置,并且没有利用 windows apiSHSetKnownFolder。我需要弄清楚如何在我的批处理/vbs 脚本中获取此功能。

如果您认为强制关闭 explorer.exe 不会损害计算机,我可以接受这一事实,即重新启动所需的时间远远超过通过用户界面更改桌面位置的基本方法。

可能有意寻找的东西是 Windows Powershell cmdlett,它需要 API 调用 SHSetKnownFolderPath。

我希望发生的事情是发生在这段视频的结尾而是来自批处理或 vbs 脚本。

答案1

要刷新桌面内容(例如,更改其位置后),只需单击空白部分并按F5

这仅在处理由 Explorer.exe 进程维护的 API 调用时有效,这就是您最初发现终止 Explorer.exe 进程可以满足您的需要的原因。

是的,您可以更改桌面的注册表值,但由于您没有通过正常或正确的方式进行更改,因此典型的F5刷新不起作用。
您可能遇到问题的其他情况,例如,如果网络连接丢失而实际桌面路径没有改变,Explorer 将给出错误,提示该位置不再可访问。如果网络恢复,Explorer 将不会更新。

就你的情况而言,SHSetKnownFolderPath您使用 autoit(也是 Windows 的 C++ 脚本)发现,它可以正确执行方法,允许您单击桌面并按下F5,发出刷新,并且可以通过 API 进行更新。

答案2

我在这里找到了答案: https://stackoverflow.com/a/13283187/11063875

By associating files, the system refreshes the icons, so my simple solution was just this:

ASSOC .anyextension=anytype
ASSOC .anyextension=

Second row disassociates the extension

遗憾的是,这必须以管理员身份运行。

相关内容