介绍

因为电脑的系统托盘出现了一个透明的图标,右键和左键都没有反应,所以就使用人工智能写了个 bat 脚本解决问题,这个脚本可以有效解决无效图标,以及系统托盘图标无效的问题。

使用方法,和前面的脚本一样,粘贴到记事本,然后将文件另存为界面将文件编码修改为 ANSI,最后将文件扩展名修改为 bat 或者 cmd,双击即可运行。

脚本

@echo off
:: ==========================================
::  Windows 图标与缩略图缓存深度修复工具
::  【重要】请将此文件保存为 ANSI 编码!
:: ==========================================
color 0A
title Windows 图标缓存深度修复工具

:: ==========================================
:: 自动管理员权限模块
:: ==========================================
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
    echo [权限] 正在请求管理员权限...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"

:: ==========================================
:: 主程序逻辑
:: ==========================================
echo.
echo ==========================================
echo    Windows 图标与缩略图缓存重建工具
echo ==========================================
echo [提示] 本工具拥有最高权限,将执行深度清理。
echo [警告] 运行期间桌面将短暂消失,请勿惊慌。
echo [建议] 请确保已保存所有打开的文档。
echo.
pause

:: 步骤 1:强制结束资源管理器
echo.
echo [步骤 1/5] 正在关闭 Windows 资源管理器...
taskkill /f /im explorer.exe >nul 2>&1
timeout /t 2 /nobreak >nul
if errorlevel 1 (
    echo [错误] 无法结束资源管理器进程,请检查是否有软件占用。
    pause
    exit /b
)

:: 步骤 2:删除主图标缓存
echo [步骤 2/5] 正在删除主图标缓存 (IconCache.db)...
attrib -h -s -r "%localappdata%\IconCache.db" >nul 2>&1
del /f /q "%localappdata%\IconCache.db" >nul 2>&1
if errorlevel 1 (echo [注意] 主缓存文件可能不存在或无法删除。)

:: 步骤 3:深度清理 Explorer 文件夹缓存
echo [步骤 3/5] 正在深度清理缩略图数据库...
cd /d "%localappdata%\Microsoft\Windows\Explorer" >nul 2>&1
if errorlevel 1 (
    echo [错误] 无法进入 Explorer 缓存目录。
) else (
    attrib -h -s -r *.* >nul 2>&1
    :: 使用通配符覆盖所有可能的 iconcache 和 thumbcache 变体
    del /f /q iconcache_*.db >nul 2>&1
    del /f /q thumbcache_*.db >nul 2>&1
    del /f /q *.db >nul 2>&1 
)

:: 步骤 4:重置托盘图标历史
echo [步骤 4/5] 正在重置通知区域图标缓存...
reg delete "HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v IconStreams /f >nul 2>&1
reg delete "HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v PastIconsStream /f >nul 2>&1

:: 步骤 5:重启资源管理器
echo [步骤 5/5] 正在重启 Windows 资源管理器...
start explorer.exe

echo.
echo ==========================================
echo    操作完成!
echo ==========================================
echo [成功] 图标缓存已清除,系统正在后台重建。
echo [提示] 如果几秒后桌面仍未出现,请按 Ctrl+Shift+Esc,
echo        在任务管理器中新建任务 explorer.exe。
echo.
pause