原文地址: 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=textfile
或 exe=exefile
的方法, exe 这个比较容易让人接受一点,因为 exe 类型是几乎不会被修改成其他类型了。谈到几乎不会被修改的话,我倒可以改成这样 .=.
应该也比较保险,试了一下方便有效。