批處理刷新圖標


原文地址: 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\themeui.dll
  REM inf 代碼太多
  >%tmp%\tmp.inf (
      echo;[Version]
      echo;Signature=$Chicago$
      echo;[DefaultInstall]
  )
  rundll32 SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 %tmp%\tmp.inf
  REM inf 需要%1是有效inf,win7報錯:您選中INF文件不支持此安裝方法
  %SystemRoot%\System32\InfDefaultInstall.exe "%1"

網上有一些類似 txt=textfileexe=exefile 的方法, exe 這個比較容易讓人接受一點,因為 exe 類型是幾乎不會被修改成其他類型了。談到幾乎不會被修改的話,我倒可以改成這樣 .=. 應該也比較保險,試了一下方便有效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM