原文地址: 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=textfile
或 exe=exefile
的方法, exe 這個比較容易讓人接受一點,因為 exe 類型是幾乎不會被修改成其他類型了。談到幾乎不會被修改的話,我倒可以改成這樣 .=.
應該也比較保險,試了一下方便有效。