批处理刷新图标

原文地址: https://www.cnblogs.com/daysme/
标签: 批处理 cmd bat 刷新桌面 刷新图标 立即生效
昨天写的一文件关联的小工具里有一个关联图标的功能,遇到一个问题,就是关联的图标不能马上生效。
网上大多数的刷新方法都是 taskkill /f /im explorer.exe >nul 2>nul&start explorer.exe ,这种方法可以更新图标。但是用户打开的资源管理器窗口会被关闭,开得比较少还好,多的话就尴尬了,重新打开都要半天,体验非常不好。
为了解决这个问题,第二天我还是在想有没有其他的解决方法。因为我觉得有时候刷新图标并没有都把资源管理器关闭呀,那么人家用的是什么方法呢?一定还有其他方法。
对了,为什么自己的代码里关联扩展名的时候图标是立即生效的?是修改这个特殊的地方的注册表导致的吗?那关联图标也修改了类似的注册表了。
还有一个可疑的地方是 assoc ,一个用于修改文件类型关联的命令。试了一下,就是他!使用他时系统会自动刷新缓存。那么问题来了,我们必须使用一个文件类型去关联吗?为了刷新图标而去添加一个关联,好像是产生了些副作用。
然后继续寻找其他的方法,但是都没有找到没有副作用的,以下对这些刷新方法进行整理和比较。

  REM taskkill 用户窗口被关闭
  taskkill /f /im explorer.exe >nul 2>nul&start explorer.exe
  assoc 有多余添加
  assoc exe=exefile
  REM regsvr32.exe 图标有白块
  regsvr32.exe /s /n /i:/UserInstall %SystemRoot%system32	hemeui.dll
  REM inf 代码太多
  >%tmp%	mp.inf (
      echo;[Version]
      echo;Signature=$Chicago$
      echo;[DefaultInstall]
  )
  rundll32 SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 %tmp%	mp.inf
  REM inf 需要%1是有效inf,win7报错:您选中INF文件不支持此安装方法
  %SystemRoot%System32InfDefaultInstall.exe "%1"

网上有一些类似 txt=textfileexe=exefile 的方法, exe 这个比较容易让人接受一点,因为 exe 类型是几乎不会被修改成其他类型了。谈到几乎不会被修改的话,我倒可以改成这样 .=. 应该也比较保险,试了一下方便有效。

原文地址:https://www.cnblogs.com/daysme/p/8371025.html