2007年12月9日星期日

HOWTO: 清除 Windows XP “添加或删除程序”中的大片空白区域

从某个时候安装/卸载一个软件后开始,发现 Windows XP 中的“添加或删除程序”窗口中出现了大片的空白区域,本来应该邻近的两个软件信息相距甚远,跨越数个屏幕距离。同时可能发现有一个/多个已安装的软件并没有出现在此。(注意,如果是这样,那么这个软件就是你的重要调查目标)

出现问题的“添加/删除程序”窗口上,有大片的空白区域
图片1:在某个程序信息下方,出现了大片空白区域

问题根源:
你会发现可卸载的程序/软件列表中,每个项目之前都有一个小图标。而在安装的程序/软件中,有一个或数个软件引用了错误的图标信息。
你可以在注册表中找到引用图标的信息。

解决方法:
打开 Windows “开始”菜单,点击“运行”,输入 regedit,回车。即可打开 Windows 注册表编辑器。

!!! 进行以下步骤之前,强烈推荐事先备份注册表信息。您可以不选择全部备份,推荐在您即将删除/修改的键值上点击右键,选择“导出”。如果出现问题,可以双击导出的 .reg 文档,重新导入原始注册表键值数据。

依次展开:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
Windows\CurrentVersion\Uninstall
此时你会看到许许多多的 CLSID 信息,这些信息内包含了对应的软件安装信息。

展开注册表的指定路径
图2:展开指定的注册表路径

下面的任务就是寻找包含 DisplayIcon 的项,查看其中的信息。
比如这样的项,其中信息如下:
DisplayIcon: F:\Games\命令与征服\Register.exe,-1
这条安装信息的显示图标引用了 Register.exe 的 -1 索引图标,而这个索引位置没有图标信息,所以由于图标显示错误导致了“添加或删除程序”界面的显示异常。删除 -1 即可(一般 exe 文件不包含 -1 位置的图标索引)。

删除 .exe 后面的 -1
图3:删除 .exe 后面的 -1

将此项修改为:
DisplayIcon: F:\Games\命令与征服\Register.exe
你可以继续查询包含 .exe,-1 或者 .exe -1 的项,删除其中的 -1
完成后,重新打开“添加或删除程序”,待信息加载完毕,你会发现显示又重新恢复了正常。可以看到,之前出问题的“命令与征服”前面已经正确出现了图标。

正常的“添加/删除程序”
图4:“添加或删除程序”恢复正常显示

这样的问题多见于中文版本 AutoCAD 2002 的安装程序中。