- 积分
- 569
- 最后登录
- 2024-1-27
- 精华
- 0
- 阅读权限
- 40
- 主题
- 30
- UID
- 215127
- 帖子
- 898
- PB币
- 2402
- 威望
- 35
- 贡献
- 0
- 技术
- 0
- 活跃
- 206
哇哩咧!
- UID
- 215127
- 帖子
- 898
- PB币
- 2402
- 贡献
- 0
- 技术
- 0
- 活跃
- 206
|
楼主
发表于 2007-12-30 04:05:47
IP属地江西
Windows Vista视图bug最终修复注册表文件by heeroyuyj,2007-12-30。
如需转载请注明作者及出处,非常感谢!
在使用了几个月的Vista后,我还是不明白究竟为什么系统记不住我对文件夹进行的设置,而微软还继续在这个Vista视图的bug上玩跳房子的游戏,没有任何相关的补丁发布。
在网上搜索,很多所谓解决这个问题的方法,都是治标不治本的,根本不能修复问题(这个我在稍后会谈到,大伙儿明鉴我说的对不对,呵呵)。
万般无奈,自己动手,花了不少时间分析和研究,最后倒是把问题解决了,真的是苦心人,天不负!爽啊!
不过,在大家知道解决方法之前,我希望能给大家说说我是怎么解决的。毕竟,授人以鱼,不如授人以渔,让大家知道Vista视图的bug究竟是怎么回事,为什么会出现这样的问题,我觉得更有意义些。
也请大伙儿的在认真阅读我的帖子和试用我的方法后,不要盲目的顶帖,先验证一下我给出的方法是否有效!我相信真正有用、好的帖子,是经得起考验的!
闲话不多说,我们进入正题。
相信大家都知道,Windows所有文件夹的类型、查看方式(即『视图』)的设置和改变,都是通过系统注册表来保存的。根据微软的介绍,默认情况下的Vista,是绝对拥有足够大的文件夹缓存记忆数值(大约是5000个)用于记住文件夹的设置和改变的,这个数值同样在XP SP2中得到了提升,因为在XP SP1和未升级SP1之前的XP版本中,微软出于保留系统资源的目的,让XP只能记住少于或等于400个文件夹的设置,但这个数值显然是不够的(但是有别的方法修改,所以不是什么大问题,那是后话了)。
回到Vista,理论上来说,5000这个数值,对于大多数的Vista用户肯定是够用了的(很少人会有机会浏览这么多的文件夹,并逐一改变其视图设置)。但是,现在越来越多的人都发现了一个问题。什么问题呢?Vista有时很sb,它记不住也不保存用户更改过的文件夹的类型和特定的查看方式,相反,它常常会随意更改你已经设置好的文件夹类型和查看方式。
有人说,这是Vista的新功能,并非bug,还说是因为系统会自动根据文件夹里的文件类型自动改变视图。例如对于音乐文件夹,会自动调整为更合适的查看方式。这个我承认是新的改进功能,很方便,也很实用。
但是这个功能仅仅是针对那些你尚未访问过的文件夹生效的。什么意思?好比一个全是音乐文件的文件夹,初次打开,默认的查看方式肯定是音乐文件夹特有的“音乐详细信息”的视图模式。但是,对于一个文件夹,当你访问过它,并改变了它的视图后,就像这个例子里的音乐文件夹,我把它的文件夹类型改为了“全部项目”,当时看是有效果的,回头某次当我再打开这个文件夹,却发现系统并没有记住我之前做过的更改,它又变成了别的查看方式。
再来举个简单的例子,一个满是exe或者dll的文件夹,你已经对它设置并使用了“全部项目”的文件夹类型以及“详细信息”的查看方式,但是不知为什么,某次你打开它,却发现文件夹的类型成了音乐文件夹或者幻灯片文件夹(还有更多奇怪的文件夹类型-_-b)查看方式也相应的被改变了,这不是非常滑稽的事情吗?在你已经将这些文件夹查看方式调整为了你需要的浏览方式的情况下,显然视图的自动调整功能是不可能、更是不应该对用户的设置进行干涉的,真是让人觉得莫名其妙,这怎么会不是bug呢?
建议说这些不是bug的朋友去网上查查,现在有多少关于Vista视图混乱的求助,我相信一个问题的出现究竟是不是bug,大伙儿最有发言权(光是远景论坛里就有不少)。
好了,接下来继续对这个问题分析。
这些被“遗忘”了的设置很可能是由于Vista自身对于文件夹设置的保存和记忆出现了问题而导致的结果。我们可以通过重置Vista的文件夹来达到一个暂时的“息事宁人”。或者用现在网上更流行的一种方法,删除注册表中的以下两个路径也能使得问题暂时缓解:
[HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU]
[HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags]
为什么我说是暂时?因为这两个方法的原理都是让系统彻底清除以前保存的所有文件夹的设置,然后重新记忆文件夹设置(在远景的『Vista 进阶参考』板块也有人发过帖,说是找到了解决这个“视图混乱”的办法,那帖子的地址是:https://bbs.pcbeta.com/thread-196024-1-1.html,各位应该都看过吧?)。这些方法的确能管用一段时间,但是很不幸的,因为并没有解决产生问题原因,光靠这样,只是治标不治本,过不了多久,问题会就再次出现(那个帖子里,作者也承认了无法杜绝问题再生),相信用过的人也是深有体会的。
那么问题出在哪儿?按照之前我说的,系统对于这些文件夹设置的保存数量是有个最大上限的,超过了上限的,要么取代已有的项要么就是被系统忽略。所以,这个问题的出现也有可能是因为系统的最大文件夹视图的记忆数量不够用了,可是,我这个才装的Vista系统,还没访问超过5000个文件夹,怎么会就不够用了?
在XP和XP SP1时代,为了避免出现文件夹视图设置的记忆数量不够用,用户可以通过修改注册表中BagMRU Size的数值达到增加这个上限的效果。对于XP确实有效,但是在Vista中,你这么做,却丝毫没有效果。
这里我利用Process Monitor把explorer.exe对注册表的读写行为进行了跟踪,终于发现了问题所在!
在XP中,系统会在以下位置保存你对文件夹做出的更改和设置:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\BagMRU]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\Bags]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\BagMRU]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Bags]
删除以上的注册表路径,也就意味着清除你所有文件夹的设置。
如果要加大BagMRU Size,也只需要在以下位置进行设置即可:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam]
奇怪的是,Vista却不保存在这儿了,它保存到了新的位置:
[HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU]
[HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags]
这也是为什么以往对XP管用的BagMRU Size调整(即加大文件夹记忆缓存),在Vista下没用了。
更让人感觉奇怪的是,在一个全新安装的Vista里(我在VPC里装的一个Vista用以测试),你却会在以下路径找到BagMRU Size
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam]
上面的位置正是XP储存BagMRU Size的值的地方!所以大家都以为在这里对BagMRU Size进行调整会有效果,但是无论你怎么搞,都没用,为什么会这样?大家看下面的截图:
这是我对explorer.exe进行的注册表读写跟踪。高亮的那行显示出了问题原因!explorer.exe在尝试于[HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell]路径寻找BagMRU Size时失败,这是因为Vista从来就没有在这个位置有过BagMRU Size!所以返回的Result只能是“NAME NOT FOUND”!
天知道Vista为什么会这样sb。这个很明显的导致了Vista无法在注册表中找到它需要的键值,鉴于Vista无法找到BagMRU Size,那么即使默认情况下它应该是支持的5000个文件夹设置的记忆数量,也是纸上谈兵。虽然我不知道当explorer.exe找不到这个键值时会使用一个怎样的BagMRU Size,但可以肯定的是它使用了一个远远低于5000的数值(谁知道那个数值是多少?也许是100个?也许更少都可能!),因而导致了我们的文件夹视图出现了问题(之前我说过的,当超过记忆上限时,要么取代已有项,要么就被忽略)。
更深层的原因是什么,我也无法得知了,但是分析到这里,已经可以给出切实有效的解决办法,至少对我的系统,非常有效,而且视图的问题没有再出现过。绝非之前提到的那种治标不治本的解决方法,大家照着做,相信也是可以看到成果的。
第一个方法,打开注册表,找到以下路径:
[HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell]
如果你在右侧的区域能看到BagMRU Size,那么你可以不用担心这个作呕的问题,你只需要增加它的数值大小就够了;但是如果你没有看到BagMRU Size,那么你需要新建一个『DWORD(32-位)值』,并以BagMRU Size命名;接下来,双击BagMRU Size,输入十进制的20000(或者十六进制的4e20)。
图中就是新建/修改后的BagMRU Size
Vista默认的BagMRU Size数值本来应该是5000,这里我输入的则是20000,你也可以输入任何你想要的大小。
另外,64位的Vista的用户需要注意的是,在注册表中,还有一个路径是用于控制BagMRU Size的,如下方所示:
[HKEY_CURRENT_USER\Software\Classes\Wow6432Node\Local Settings\Software\Microsoft\Windows\Shell]
现在,当在这个位置有BagMRU Size时,再次打开explorer.exe进行跟踪:
explorer.exe成功的找到了BagMRU Size!
第二个方法,如果你不希望自己动手搞定这个问题或者你觉得比较麻烦,那么你也可以稍后下载我提供的注册表文件。这个注册表文件在导入系统注册表后,会自动清除所有你系统已经记住的文件夹设置(包括从XP升级至Vista遗留下来的),并关闭系统对文件夹进行的自动视图调整功能,同时,将BagMRU Size的值设为20000。
当你导入了这个注册表文件,并重启后,你会发现每一个文件夹的默认类型都变成了全部项目,你可以通过修改父级文件夹的文件夹类型和查看方式,并一次性应用到所有子文件夹来达到对于批量类似格式的文件夹的视图的快速调整(这里顺便bs一下微软,XP中的将父级文件夹的类型和查看方式应用到子文件夹的功能根本没有用)。如果你觉得禁用了自动视图调整功能很不爽或者你很喜欢Vista的这个新功能,你也可以取消相应代码(不过我本人是真不觉得这个功能有多好,还是习惯自己决定文件夹的查看方式,萝卜青菜,各有所爱吧,呵)。你也可以自己用记事本编辑这个注册表文件,去掉你认为不需要的部分。同时,我在这个注册表文件中说明了使用的步骤和方法,所以务必先用记事本打开,仔细看看。完成之后,只需要双击并导入到系统注册表。
至此,在微软官方未发布补丁前,Vista的视图bug问题应该是完美解决了!
ps_01:根据远景eutgoeru朋友的建议,将所有文件夹首次出现常用对话框时的视图方式设置成“列表”查看并按“类型”排序的形式(不影响自行修改),如果大家不喜欢这个设置,那么,请用记事本打开我提供的注册表文件,找到以下代码,删除或用“;”注释掉即可:
[HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\ComDlg]
"IconSize"=dword:00000010
"LogicalViewMode"=dword:00000003
"Mode"=dword:00000003
"Sort"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,a6,6a,\
63,28,3d,95,d2,11,b5,d6,00,c0,4f,d9,18,d0,0b,00,00,00,01,00,00,00
"Vid"="{0E1FA5E0-3573-11CF-AE69-08002B2E1262}"
Windows Vista视图bug最终修复注册表文件.rar
(1.42 KB, 下载次数: 1005)
[ 本帖最后由 Armlor 于 2008-1-8 00:58 编辑 ] |
-
4
查看全部评分
-
|