以编程方式更改和刷新图标(无需重新启动)

use*_*939 5 vbscript windows-xp batch-file

当我手动替换图标时(即不从资源管理器中的"文件夹选项"窗口),图标不会更新.例如,如果我执行此批处理代码:

REG ADD HKCR\testfile\DefaultIcon /ve /d "C:\test.ico,0" /f
Run Code Online (Sandbox Code Playgroud)

图标显示在"文件夹选项"的列表中应该显示,但图标不会在桌面或资源管理器中更新.

如果我只是点击任何文件类型的"更改图标"按钮并退出"文件夹选项"窗口,则会更新图标.但据我所知,这不能通过批处理或VBS完成.

重新启动explorer.exe可以正常工作,但如果我这样做,任务栏中的应用程序选项卡由于某种原因变得有问题(例如:当应用程序最大化时,我不能只是左键单击任务栏中的选项卡以最小化它 - 我必须直接点击它并点击最小化...).更不用说,如果我这样做,所有打开的资源管理器窗口都将关闭,这有点麻烦.

我还有一个TuneUp Utilities的副本,它有一个重新加载图标缓存的选项,这确实像预期的那样工作.但是再一次,我无法通过批处理或VBS访问此工具.它不会重新启动explorer.exe或删除任何文件(如某些解决方案).我敢肯定的这一点,因为我没有iconcache.db文件的任何地方我的操作系统驱动器上.

我也尝试通过VBS添加注册表项,但这没有帮助.

欢迎任何批处理或VBScript解决方案!

use*_*939 4

通过关联文件,系统会刷新图标,所以我的简单解决方案就是这样:

ASSOC .anyextension=anytype
ASSOC .anyextension=
Run Code Online (Sandbox Code Playgroud)

第二行取消与扩展的关联。