如何刷新桌面而不重新启动explorer.exe?


2

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

我正在寻找一种方法来一旦更改到注册表“刷新”(更新/重新加载/同步)桌面。

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

与答案有关的注释,而不是问题:

F5刷新显然有效但我到目前为止能够使用自动脚本。问题是我正在更改一个环境变量值,它只是它的默认位置,并没有使用SHSetKnownFolder的windows api 。我需要弄清楚如何在我的批处理/ vbs脚本中获取此功能。

如果您认为强行杀死explorer.exe不会损害计算机,我可以接受,如果重启它所需的时间远远超过通过用户界面更改桌面位置的基本方法。

可能是故意寻找的是一个windows powershell cmdlett,它需要api调用SHSetKnownFolderPath。

我想要发生的事情是在视频结尾发生的事情,但是来自批处理或vbs脚本。


评论不适用于扩展讨论; 这个对话已经转移到了聊天中
Mokubai

仅仅完全改变同一位置的内容是否适合您的目的?也许使用符号链接; 更改链接目标,然后触发F5。
JDługosz2016年

@JDługosz:我们已经解决了这个问题。F5不会更新桌面。虽然事后看来它应该,它不会为这类问题做到这一点
Jouster500

我的意思是,通过不更改目录的名称但看似改变同一目录的内容,F5将正常工作,就像任何正常的更改一样。它不再需要重新加载加载时设置。跟着我?
JDługosz2016年

另一个想法:有设置更改发送到顶级窗口的广播消息。也许它会对此作出回应?
JDługosz2016年

Answers:


4

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

这仅在处理由Explorer.exe进程维护的API调用时才有效,这就是您最初发现杀死Explorer.exe进程的原因。

是的,您可以更改桌面的注册表值,但由于您没有通过正常或正确的方式执行此操作,因此典型的F5刷新不起作用。
您可能遇到过问题的其他情况,例如,如果在实际桌面路径未更改时网络连接丢失,Explorer将发出错误,指出该位置不再可访问。如果网络已恢复,则资源管理器将不会更新。

在您的情况下,您使用autoit(也是Windows的C ++脚本)发现的SHSetKnownFolderPath正确执行该方法,允许您单击桌面并按F5,发出刷新,由于API,该刷新能够更新。


不幸的是这不正确。当我使用我的脚本时,F5不会对桌面位置进行任何更改。如果更改生效,则需要重新初始化explorer.exe进程而不会终止它
Jouster500 2016年

通常F5会起作用。我不知道为什么它对你不起作用。
LPChip 2016年

您可以尝试使用我使用的脚本,以便自己手动更改Windows机器的桌面位置,看看您是否能够了解情况。这只是为了确保它在Windows机器上没有区别。我发布的答案是我用来运行它的三个脚本。
Jouster500 2016年

@PIMP_JUICE_IT:是的,我写了那些脚本,写了那个答案,问了这个问题,在这里问了一下,并且还在一年多前处理同样的事情= \。我想要的是当您通过右键单击其属性更改桌面文件夹的位置时单击“应用”按钮时激活的过程。
Jouster500 2016年

1
答案是不完整和模糊的,为什么f5应该工作,并没有提供任何关于同一问题的任何指导的未来用户的见解。
Jouster500 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.