今天朋友的电脑(系统是Windows XP)出现一个非常奇怪的现象:打开应用程序的时候在任务栏中出现两个相同的图标列表,而且拖动也删除不掉。比如打开“我的电脑”之后会发现在任务栏上“我的电脑”的图标左边右边各出现一个。后来在网上找了一些资料,终于找到了解决的方法。
打开“Windows任务管理器”(同时按下按下 Ctrl+Alt+Del 键或Ctrl+Shift+Esc 键),选择“进程”标签关闭所有的 explorer.exe 和 iexplore.exe 进程。这个时候电脑中只显示任务管理器程序了。
接下来切换到“应用程序”标签,点击下面的“新任务”按钮,在打开文本框中输入“regedit”打开注册表。找到并删除以下三个项目(包含其下的所有键):
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\explorer\Streams
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\explorer\StreamsMRU
然后关闭注册表编辑器,单击任务管理器上的“关机”-“重新启动”菜单重启电脑之后就可以了。
另外在Windows XP新闻组上写了一个vbs脚本文件,可以直接处理上面的操作,内容如下:
'?Kelly Theriot and Doug Knox - 8/22/2003
'翻译:Smallfrogs。翻译内容:将英文提示改为简体中文
'来源:Microsoft Windows XP NewsGroup
Set WSHShell = WScript.CreateObject("WScript.Shell")
Message = "本脚本用于修复Windows XP中当最小化程序时,无法在任务栏显示图标的问题。"& vbCR & vbCR
Message = Message & "为了正常工作,本脚本将关闭和重启 Windows Explorer 外壳,这个操作不会损坏你的系统。" & vbCR & vbCR
Message = Message & "请关闭所有杀毒软件的实时监控!并保存所有打开的文件。"& vbCR & vbCR
Message = Message & "是否继续?"
X = MsgBox(Message, vbYesNo+vbExclamation, "注意")
If X = 6 Then
On Error Resume Next
WshShell.RegDelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2\"
WshShell.RegDelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\StreamsMRU\"
WshShell.RegDelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop\"
WshShell.RegDelete "HKCU\Software\Microsoft\Internet Explorer\Explorer Bars\{32683183-48a0-441b-a342-7c2a440a9478}\BarSize"
P1 = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"
WshShell.RegWrite p1 & "NoBandCustomize", 0, "REG_DWORD"
WshShell.RegWrite p1 & "NoMovingBands", 0, "REG_DWORD"
WshShell.RegWrite p1 & "NoCloseDragDropBands", 0, "REG_DWORD"
WshShell.RegWrite p1 & "NoSetTaskbar", 0, "REG_DWORD"
WshShell.RegWrite p1 & "NoToolbarsOnTaskbar", 0, "REG_DWORD"
WshShell.RegWrite p1 & "NoSaveSettings",0,"REG_DWORD"
WshShell.RegWrite p1 & "NoToolbarsOnTaskbar", 0, "REG_DWORD"
WshShell.RegWrite p1 & "NoSetTaskbar",0,"REG_DWORD"
WshShell.RegWrite p1 & "NoActiveDesktop",0,"REG_DWORD"
WshShell.RegWrite p1 & "ClassicShell",0,"REG_DWORD"
p1 = "HKCU\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\LocalUser\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"
WshShell.RegWrite p1 & "NoCloseDragDropBands", 0, "REG_DWORD"
WshShell.RegDelete p1 & "NoMovingBands"
p1 = "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell"
WshShell.RegWrite p1, "explorer.exe", "REG_SZ"
p1 = "HKCU\Software\Microsoft\Internet Explorer\Explorer Bars\{32683183-48a0-441b-a342-7c2a440a9478}\"
WshShell.RegDelete p1 & "BarSize"
WshShell.RegWrite p1, "Media Band", "REG_SZ"
On Error Goto 0
For Each Process in GetObject("winmgmts:"). _
ExecQuery ("select * from Win32_Process where name='explorer.exe'")
Process.terminate(0)
Next
MsgBox "完成!" & vbcr & vbcr & "?Kelly Theriot and Doug Knox", 4096, "完成"
Else
MsgBox "没有对你的系统进行任何改变。" & vbcr & vbcr & "?Kelly Theriot and Doug Knox", 4096, "用户取消了"
End If
最后需要说明的是:上述的方法不仅解决开始所描述的问题,而且还可以解决各种任务栏工作不正常的情况,比如:任务栏不显示正在运行的程序的图标,或者在任务栏上总是出现重复的图标等等。
参考资料:
http://gaozhongliang328.blog.163.com/blog/static/9853949200722910502867
我的执行第52行有错“0×80041017”