社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 1147阅读
  • 0回复

win2000下禁止媒体文件预览技巧的探索

楼层直达
级别: 光盘新手
发帖
251
飞翔币
335
威望
14
飞扬币
1552
信誉值
0
问题的由来
win2000系统中对于音频和视频文件选中会自动预览,从而占用太多资源
为了解决这个问题,我是慢慢摸索了2天,终于在今天 凌晨3点完全搞定,其实还是很简单的,但是在摸索的过程中学到了些东西

一开始的时候我认为只要修改 文件夹选项就可以了,但是没有用处,后来我又想到了 用自定义文件夹来实现,的确,这样是可以实现,主要就是修改flod.htt文件了
其中有个function IsSoundFile函数 是根据后缀判断是否为音乐文件的
并且有函数片断
else if (IsSoundFile(ext))
{
Preview.innerHTML = '

' +
'' +
''+
'' +
'
';
MediaPlayer.EnableContextMenu = false;
MediaPlayer.Open(item.Path);
}
这个就是用来播放音乐格式的代码了,其实就是调用了个object对象
把这段注释掉的确可以用,但是 如果每一个文件夹都这么改不累死人嘛
我就在想 自定义文件夹中有个标准模板 ,可能是标准模板定义了全部的模板的吧,那么只要把这个标准模板修改了,一切不就OK了?于是乎,我找啊,找啊,在一次不经意间突然发现注册表里面有一个选项是关于模板的
其路径为
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\WebView\Templates
一看里面的值,终于发现原来在C:\WINNT\Web下配置了各类的模板
马上动手修改了C:\WINNT\Web下的标准模板stardard.htt,重启一下,查看?没有什么作用啊
苦啊,为什么呢?
我想那么用文件夹选项里面的 重置所有文件夹功能看看呢
这一改,出问题了,发现stardard.htt 文件又被改回去了哦,惨
去网上搜索一下stardard.htt 在国外网站上说 是有个ActiveX控件里面嵌了模板了
看来是系统自带了个模板,不知道藏什么地方了,哪儿那么容易找呢,嗨,只能用文件内容查找了,还好,大体可以确定文件夹后缀为dll的,一搜索,果然有结果啊
发现个webvw.dll文件
一看到这个文件,眼睛就一亮 ,这个应该就是控制web视图的
查了一下运行中的activeX 果然这个dll和explore有关系
看来没有错了
但是怎么修改呢
还是只可以去网上搜索了
就直接查webvw.dll
得到的结果实在太少了,不过还好,有几篇文章
其中一篇如下
//////////////////////
很多使用WIN2K的朋友肯定一直为mediaplayer的预览占用太多资源而深受困扰,现在可以在win2000下屏蔽mediaplayer的预览了。


1, copy c:\winnt\system32\webvw.dll 到其它地方(本文中为 C:\winnt)

2.然后用Ultraedit 打开C:\winnt\webvw.dll

查找字符串 ,avi(其他格式的文件同理),(此处的查找不在16进制下面进行,即取消掉16进制的显示模式)改成 ,???或者其它也行。

3,切换到16进制模式下,再查找16进制串 61 00 76 00 69 00 (即avi的unicode形式)把a改成? ,(其它格式的同理,如mpg的将m改成?) 改的时候要看看前后文,

注意:单词 navigator中有avi字样,这里的avi字样不需要改掉。

如果avi处于其它单词中,也不要把它改掉了。改的过程中有一技巧就是通常需要改动的如mpg,mpeg,asf,avi都相邻,所以早到一处就可以改全部,省的大家去找什么mpg等的unicode.

4,确认改完后保存。

5,在命令行或者开始处运行命令 regsvr32 /u webvw.dll

6,再次运行 regsvr32 C:\winnt\webvw.dll,注意这里的路径是刚才copy出来以及改动后的webvw.dll的路径。

7,注销一下机器,万事大吉了,相信大家可以欣喜的看到这些格式的东东不会再出现预览画面,更不会再占用庞大的系统资源而导致机器如死机一般令人难以忍受。
//////////////////////////////////////////

可是我的要求和他有区别,我是连声音电影都不想让他播放,而不是仅仅的一个avi文件
不过有他这个思路就好办多了
用Ultraedit 打开,我把 else if (IsSoundFile(ext))这些段落用/***/注释掉
保存了,然后按照他说的 先用regsvr32 卸载,然后在装上自己修改过的dll
然后注销一下系统
可惜发现还是没有解决问题哦,经过多次测试后发现
系统的配置文件stardard.htt是按照那个dll文件修改过来了,但是为什么还是不可以在文件夹中起效果呢
百思不得其解啊
这个时候都凌晨2点多了啊
在我几乎要放弃的时候,我想那文章应该是有道理的,否则也不会这么给别人看的啊
严格的查看了他的操作过程
发现很奇怪的现象 为什么他要先用不是16进制模式下改,然后再在16进制模式 修改呢
而且为什么avi要查61 00 76 00 69 00查中间怎么会多出那么个0呢
我于是也严格的按照步骤做了一下,果然,发现我还有地方代码没有改过来
很奇怪的都是用00间隔开的代码,可能这个就是所谓的16进制表示吧,我依葫芦画瓢也把一些空格的地方修改为/**/注释
最后还发现 在文件的开头有61 00 76 00 69 00 这个不在程序里面 后面依稀看的是个shell32什么的,可能这个是后缀的说明,不管,全部改掉

最后保存

注册组件
注销

哈哈,成功了,不过好晚了哦,不过还是赶紧写了份这个小结

另外 如果系统是winxp的话,比较简单的办法就是
Windows XP中视频文件的预览文件“shmedia.dll”起着决定性的作用,主要关闭该动态链接文件就可以了。在“开始→运行”中输入“regsvr32 /u shmedia.dll”回车,出现“shmedia.dll中的DllUnregisterServer成功”的对话框就说明成功禁止预览功能了。如果想恢复它时,输入“regsvr32 shmedia.dll”即可。