Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

搜索
查看: 27286|回复: 234

Windows Vista视图bug最终修复!——最新修改,大家来评评理!  关闭 [复制链接]

哇哩咧!

Rank: 7Rank: 7Rank: 7

UID
215127
帖子
893
PB币
2401
贡献
0
技术
0
活跃
145
发表于 2007-12-30 04:05:47
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 进阶参考』板块也有人发过帖,说是找到了解决这个“视图混乱”的办法,那帖子的地址是:http://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进行调整会有效果,但是无论你怎么搞,都没用,为什么会这样?大家看下面的截图:

Capture_01.jpg



这是我对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)。

Capture_02.jpg



图中就是新建/修改后的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进行跟踪:

Capture_03.jpg



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

查看全部评分

远景记忆

UID
1948
帖子
3306
PB币
18644
贡献
0
技术
0
活跃
44

我是大学生! I'm Windows Phone用户 7周年庆典勋章

发表于 2007-12-30 07:39:18
凌晨 4:05……
辛苦楼主了,写得蛮详细,顶一下~

PS: 正在走向 Leopard 的小嗨飘过~

哇哩咧!

Rank: 7Rank: 7Rank: 7

UID
215127
帖子
893
PB币
2401
贡献
0
技术
0
活跃
145
发表于 2007-12-30 09:18:03
呃。。。还以为会有蛮多人受益呢。。。pb90

都没人回复啊

Rank: 9

UID
140079
帖子
2708
PB币
2360
贡献
0
技术
0
活跃
26
发表于 2007-12-30 09:37:27
支持!!!顶你这么辛苦的研究!!!

Rank: 2Rank: 2

UID
359526
帖子
388
PB币
292
贡献
0
技术
0
活跃
124
发表于 2007-12-30 10:00:41
不錯,講得非常的詳細,
不過就感覺變有點複雜,
這樣應該就有解決問題嚕,
對了,跟樓頂的大大說一下,
連開始的自訂通知也是這樣放的,
我也是找好久才才到可以清除的地方。

Power User

UID
32743
帖子
8092
PB币
23064
贡献
0
技术
1
活跃
825

十周年 I'm Windows Phone用户 7周年庆典勋章 8周年庆典勋章

发表于 2007-12-30 10:01:24
-   -  貌似本版版主不在...先人工置顶

Rank: 1

UID
459735
帖子
102
PB币
372
贡献
0
技术
0
活跃
10
发表于 2007-12-30 10:27:40
受益多多 顶一下

Rank: 2Rank: 2

UID
226285
帖子
444
PB币
1705
贡献
0
技术
0
活跃
1251
发表于 2007-12-30 13:11:14
楼主辛苦
这个方法能让打开和保存对话框记住视图设置吗,比如默认实现列表,而不是中等图标
另外 vista的默认视图是详细资料,能不能改成平铺,这样刚装完了系统,导入一个注册表文件,就实现了所有文件夹的视图都是平铺,而不是像2003那样详细资料啦/stuart.gif

UID
79171
帖子
5401
PB币
19708
贡献
0
技术
64
活跃
1412

灵感勋章 远景智多星 Win10先驱者 远景技术达人

发表于 2007-12-30 13:14:32
先顶一下,关于BagMRU Size我以前就尝过过修改,发现无效。
原来是换了地方,而MS却忘了都换地方,这确实算是一个BUG了。

不过试图混乱问题,还是没有根本解决,就算记忆的超过了最大数量,老的视图被替换恢复默认也不该乱来啊。问题是实际上会乱来,乱关联,比如类似出现控制面板改了,C盘也跟着改的神奇事情,虽然很少见,但是客观存在。

虽然给与足够的记忆数量可以缓解问题,但这种混乱的根源还是莫名其妙,估计视图太多MS自己都晕了。

还有按Shift切换视图可以隐藏或恢复显示文件名,这一问题在Vista下也是混乱不堪,不信可以试一下哪些视图不显示文件名,哪些视图可以恢复文件名。

[ 本帖最后由 slice 于 2007-12-30 13:20 编辑 ]

哇哩咧!

Rank: 7Rank: 7Rank: 7

UID
215127
帖子
893
PB币
2401
贡献
0
技术
0
活跃
145
发表于 2007-12-30 13:26:32
原帖由 eutgoeru 于 2007-12-30 13:11 发表
楼主辛苦
这个方法能让打开和保存对话框记住视图设置吗,比如默认实现列表,而不是中等图标
另外 vista的默认视图是详细资料,能不能改成平铺,这样刚装完了系统,导入一个注册表文件,就实现了所有文件夹的视图都 ...

可以记住的。不过大家可能会觉得每次自己设置比较麻烦,所以我再次修改了一下那个注册表文件,将所有文件夹首次出现常用对话框时的视图方式设置成“列表”查看并按“类型”排序的形式(不影响自行修改),如果你不喜欢,可以删除或注释掉在我提供的注册表文件中的以下代码:

[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}"

再来回答你的问题,你提出需要一个在刚装好的系统里,一次导入,所有文件夹视图自动变为平铺的查看方式,我刚刚研究了一下,找到了方法,现在发一个专门为你修改过的注册表文件,你可以试试看有没有效果,有任何问题,请及时告知与我,我会尝试解决的

For eutgoeru朋友的注册表文件.rar (1.69 KB, 下载次数: 75)

[ 本帖最后由 Armlor 于 2008-1-1 16:56 编辑 ]

哇哩咧!

Rank: 7Rank: 7Rank: 7

UID
215127
帖子
893
PB币
2401
贡献
0
技术
0
活跃
145
发表于 2007-12-30 13:28:17
原帖由 漆黑之牙 于 2007-12-30 10:01 发表
-   -  貌似本版版主不在...先人工置顶

感谢!pb67

哇哩咧!

Rank: 7Rank: 7Rank: 7

UID
215127
帖子
893
PB币
2401
贡献
0
技术
0
活跃
145
发表于 2007-12-30 13:33:01
原帖由 slice 于 2007-12-30 13:14 发表
先顶一下,关于BagMRU Size我以前就尝过过修改,发现无效。
原来是换了地方,而MS却忘了都换地方,这确实算是一个BUG了。

不过试图混乱问题,还是没有根本解决,就算记忆的超过了最大数量,老的视图被替换恢复默 ...

兄弟的意思,是我给出的方法对你无效吗?

之所以出现文件夹的关联,其实真正的原因还是因为默认情况下explorer需要的BagMRU Size根本找不到,此时explorer能记忆住的文件夹选项数量十分有限。

就像我说的,以前的系统中,超过的会取代现有的或者被忽略掉

这个处理对超出的部分的方式在Vista中是否被改变了,我也不知道,但是显著的特点就是会导致一些文件夹的试图被关联了

不过,希望你试试我给出的方法,验证一下是否能彻底解决这个问题

Apple Inc.

UID
195626
帖子
1451
PB币
3898
贡献
0
技术
0
活跃
364
发表于 2007-12-30 14:16:18
LZ 我很崇拜你~~~/w00t.gif

哇哩咧!

Rank: 7Rank: 7Rank: 7

UID
215127
帖子
893
PB币
2401
贡献
0
技术
0
活跃
145
发表于 2007-12-30 15:13:06
原帖由 evanren 于 2007-12-30 14:16 发表
LZ 我很崇拜你~~~/w00t.gif

自己解决了问题,爽!

能帮助大家解决问题,更爽,哈哈!pb67

Rank: 5Rank: 5Rank: 5

UID
53070
帖子
751
PB币
4379
贡献
0
技术
0
活跃
6
发表于 2007-12-30 16:32:47
楼主高明,钻研精神也值得学习,谢谢!

UID
79171
帖子
5401
PB币
19708
贡献
0
技术
64
活跃
1412

灵感勋章 远景智多星 Win10先驱者 远景技术达人

发表于 2007-12-30 16:37:11
原帖由 Armlor 于 2007-12-30 13:33 发表

兄弟的意思,是我给出的方法对你无效吗?

之所以出现文件夹的关联,其实真正的原因还是因为默认情况下explorer需要的BagMRU Size根本找不到,此时explorer能记忆住的文件夹选项数量十分有限。

就像我说的,以 ...


不是这个意思,这样基本解决问题了。

不过想Shift切换缩略图隐藏文件名那个XP可以正常的切换,而Vista却混乱的一塌糊涂。

还有添加删除程序里面改变视图甚至和C盘某文件夹关联,这些乱七八招的问题MS自己估计都是晕的,如果正常的话就算只记住200个视图他也不该乱关联赛,它也不该乱来啊。

不过LZ让它能够记住20000个视图的话,那些混乱问题也就不容易表现出来了。

哇哩咧!

Rank: 7Rank: 7Rank: 7

UID
215127
帖子
893
PB币
2401
贡献
0
技术
0
活跃
145
发表于 2007-12-30 17:08:15
楼上的朋友,本来Vista默认的5000个文件夹的记忆数量,对于普通用户绝对够了的(可惜它有bug,因此从未凑效过)

之前这个bug出来的时候,我每次调整文件夹的视图设置真是气愤的想呕血,希望能找到解决办法,上网求助,结果很多人却说根本不在乎这个bug之类的,还说我们这些人要求高,真是人心不古啊,唉。。。

好在,我把问题解决了,哈哈~0

2W个文件夹的记忆数量,其实很可怕的噢pb61

[ 本帖最后由 Armlor 于 2007-12-30 17:14 编辑 ]

哇哩咧!

Rank: 7Rank: 7Rank: 7

UID
215127
帖子
893
PB币
2401
贡献
0
技术
0
活跃
145
发表于 2007-12-30 17:16:08
原帖由 kyh 于 2007-12-30 16:32 发表
楼主高明,钻研精神也值得学习,谢谢!

哪里哪里,过奖啦pb29

Rank: 2Rank: 2

UID
226285
帖子
444
PB币
1705
贡献
0
技术
0
活跃
1251
发表于 2007-12-30 20:45:01

回复 10# 的帖子

谢谢,收到,开心^_^

哇哩咧!

Rank: 7Rank: 7Rank: 7

UID
215127
帖子
893
PB币
2401
贡献
0
技术
0
活跃
145
发表于 2007-12-30 21:08:20
原帖由 eutgoeru 于 2007-12-30 20:45 发表
谢谢,收到,开心^_^

务必测试效果噢:)pb29
回顶部
Copyright (C) 2005-2021 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件