0%

BAT批处理修复Windows桌面快捷图标问题

XP 、Win7桌面快捷图标错误及exe文件错误关联的批处理修复方案
以前写的一个脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
::显示或者隐藏命令 //ECHO [ON | OFF]
@ ECHO OFF
REM 修复桌面快捷方式变成了相同的图标或者未知图标,exe快捷方式或者文件无法运行。
::设置颜色为 淡蓝色背景色,白色前景色
COLOR 9F
::设置运行窗口标题
TITLE XP 、Win7桌面快捷图标错误及exe文件错误关联--修复
::提示以管理员身份运行
ECHO ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
ECHO ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
ECHO ☆ ☆
ECHO ☆ 为了能够成功修复,请使用管理员身份运行 [鼠标右键单击--以管理员身份运行] ☆
ECHO ☆ ☆
ECHO ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

::检测系统版本,如果需要并跳转到相应的系统标签处进行执行
VER|FINDSTR /I "5.1" && GOTO XP || GOTO Win7
:: XP 系统的方案
:XP
::说明可能导致此问题的相关原因
ECHO 主要症状:
ECHO 桌面多数或全部快捷方式图标变成了某一个相同、未知的图标,或者exe文件无法运行。
ECHO 1.可能由于注册表异常导致。
ECHO 2.缓存过旧导致的异常。
ECHO =====================================
::信息提示并作出选择
::暂不使用此句 CHOICE /C YN /T 10 /D Y /M "您好,键入 Y 执行修复,N 退出,如未操作,默认十秒后自动执行修复。
set /P IS=您好,键入 Y 执行修复,N 退出。(不区分大小写,输入错误将直接退出) 输入后回车
::判断输入的字符
::暂不使用此句 IF ERRORLEVEL 2 (EXIT) ELSE (GOTO R)
IF /I %IS% EQU Y (GOTO R) ELSE (EXIT)
:: Win7 系统的方案
:Win7
::说明可能导致此问题的相关原因
ECHO.
ECHO 主要症状:
ECHO.
ECHO 桌面多数或全部快捷方式图标变成了某一个相同的图标,exe文件无法运行。
ECHO.
ECHO 1.可能由于注册表异常导致。
ECHO.
ECHO 2.缓存过旧导致的异常。
ECHO.
ECHO =====================================
::信息提示并作出选择
CHOICE /C YN /T 10 /D Y /M "您好,键入 Y 执行修复,N 退出,如未操作,默认十秒后自动执行修复。
::暂不使用此句 set /P IS=您好,键入 Y 执行修复,N 退出。(不区分大小写,输入错误将直接退出) 输入后回车
::判断输入的字符
IF ERRORLEVEL 2 (EXIT) ELSE (GOTO R)
::暂不使用此句 IF /I %IS% EQU Y (GOTO R) ELSE (EXIT)

::标签R
:R
ECHO.
ECHO /////////////////////////////////
ECHO //如遇到安全软件拦截请解除拦截。/
ECHO /////////////////////////////////
::使用REG命令对注册表进行操作

::首先执行备份至临时目录
ECHO.
ECHO ■■■■ 备份注册表 ■■■■
ECHO ┌────────────┐
REG EXPORT HKCR.exe %TEMP%HKCR.exe.reg /y
REG EXPORT HKCR.lnk %TEMP%HKCR.lnk.reg /y
REG EXPORT HKCRexefile %TEMP%HKCR.exefile.reg /y
REG EXPORT HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.lnk %TEMP%HKCU.lnk.reg /y
REG EXPORT HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.exe %TEMP%HKCU.exe.reg /y
ECHO └────────────┘
ECHO ☆☆注册表备份完毕☆☆
ECHO.
ECHO ■■■■ 修复注册表 ■■■■
ECHO ┌────────────┐
::HKEY_CLASSES_ROOTexefile
REG DELETE "HKEY_CLASSES_ROOTexefileDefaultIcon" /f
REG ADD "HKEY_CLASSES_ROOTexefileDefaultIcon" /ve /t REG_SZ /d "%%1" /f
::设置变量并赋值
set exe=""""%%1""" %%*"
REG DELETE "HKEY_CLASSES_ROOTexefileshellopen" /f
REG DELETE "HKEY_CLASSES_ROOTexefileshellrunas" /f
REG ADD "HKEY_CLASSES_ROOTexefileshellopencommand" /ve /t REG_SZ /d %exe% /f
REG ADD "HKEY_CLASSES_ROOTexefileshellopencommand" /v "IsolatedCommand" /t REG_SZ /d %exe% /f
REG ADD "HKEY_CLASSES_ROOTexefileshellrunascommand" /ve /t REG_SZ /d %exe% /f
REG ADD "HKEY_CLASSES_ROOTexefileshellrunascommand" /v "IsolatedCommand" /t REG_SZ /d %exe% /f

::HKEY_CLASSES_ROOT.exe
REG ADD "HKEY_CLASSES_ROOT.exe" /ve /t REG_SZ /d "exefile" /f
assoc.exe=exefile

::HKEY_CLASSES_ROOT.lnk
REG ADD "HKEY_CLASSES_ROOT.lnk" /ve /t REG_SZ /d lnkfile /f
assoc.lnk=lnkfile

::HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.lnk
REG DELETE "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.lnk" /f
REG ADD "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.lnkOpenWithProgids" /ve /f
REG ADD "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.lnkOpenwithlist" /ve /f
REG DELETE "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.lnkOpenWithProgids" /va /f
REG DELETE "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.lnkOpenwithlist" /va /f

::HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.exe
REG DELETE "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.exe" /f
REG ADD "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.exeOpenWithProgids" /ve /f
REG ADD "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.exeOpenwithlist" /ve /f
REG DELETE "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.exeOpenWithProgids" /va /f
REG DELETE "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.exeOpenwithlist" /va /f

::REG DELETE "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerShellIcons" /f

::判断图标缓存文件 IconCache.db 是否存在 ,是则删除文件
IF EXIST "%USERPROFILE%AppDataLocalIconCache.db" (DEL /F /Q /A "%USERPROFILE%AppDataLocalIconCache.db") ELSE (ECHO 未发现图标缓存文件)
IF EXIST "%USERPROFILE%LocalSettingsApplication DataIconCache.db" (DEL /F /Q /A "%USERPROFILE%LocalSettingsApplication DataIconCache.db") ELSE (ECHO 未发现图标缓存文件)
::重启 explorer 进程
TASKKILL /IM explorer.exe /F
start "" "explorer.exe"
ECHO └────────────┘
ECHO ☆☆注册表修复完成☆☆
ECHO.
::等待按键继续
ECHO .......................................................................
echo 操作完毕,如果提示成功并且还存在问题建议重启计算机后查看是否已经修复.
pause>nul
觉得文章有用?请我喝杯咖啡~