高手进阶——FileMon使用实例之一

文:Koya / KunStudio.com

----刊登于2001年第9期《电脑应用文萃(电脑界光盘)》

  RegMon<的大名想必对大多数玩家们来说是如雷贯耳,随便打开一台老鸟们的电脑,发现就像发现酷爱运动的人随身带一把瑞士军刀一样简单。用RegMon 可以监视各种程序对注册表的种种操作,所以喜欢修改注册表的各位老鸟们,自然是随身得带上这样一把“瑞士军刀”的了。

  不过,今天的主角不是RegMon,而是RegMon的同门兄弟FileMon。不知在RegMon使用多了以后,会不会有一种感觉,确切地一点儿说是有些遗憾,那就是RegMon只能对注册表的各种操作进行监视,而实际上我们有时还要求对文件的监视操作。在这种需求下,Sysinternals公司(RegMon的娘家)又为大家推出了FileMon(图一)。

  FileMon的最新版本是V4.32,大小只有77K,可谓是小巧玲珑。您可以他的娘家http://www.Sysinternals.com 或是国内的Kun Studio http://www.kunstudio.com 去下载一个,一二分钟搞定。

  打开FileMon,惊奇地发现FileMon的界面与RegMon的界面是那么的十分类似,不愧是同门兄弟,完全是一对双胞胎!!!所以用惯了RegMon后再用FileMon,不用再学习也不用别人指导,三分钟之内您就可以完全上手。标准的Windows应用程序界面,从上到下依次是标题栏、菜单、工具栏、主窗口和状态栏。而且最常用的功能也都放在了工具栏上了(图二)。保存、捕捉事件、滚动、清屏、时钟,过滤、历史深度,查找和资源管理器。

  下面就简要地介绍工具栏上的这些按钮的功能:

   保存:那就是可以将当前监视到的记录以*.log格式保存起来,便于以后的继续研究。

   捕捉事件:当按钮被按下时会出现一个红X字,这时表示不对当前的各种操作进行监视。再按一下,切换回监视状态。

  滚动:当按钮上变为一个红X字时表示在主窗口中的的监视结果不进行滚动。

   时钟:计时方式的变化。

   过滤:当按下此按钮后,会弹出一个过滤框(见图三)。在这里可以填下对什么样的程序进行文件监操作。


  历史深度:在这儿可以设置主窗口里只保留最新的XX条记录。

   查找: 在已监视到的记录中查找您所要的内容。

  资源管理器:在主窗口中选中一条记录,然后点击此键便可打开资源管理器,并跳到记录所示目录下。很是方便。

 

  大致了解了以上功能之后,我们再以一个实例操作来具体掌握FileMon的妙用。


  Norton Disk Doctor(以下简称为NDD 见图四) <也是一款让老鸟们爱不释手的超强工具,从DOS下的就开始的NDD 以其强劲地修复磁盘的功能被人们亲切地称为“磁盘医生”。 <发展到现在,NDD已成为Symantec 公司的Norton Utilities 2001(又称SystemWorks, 以下简称为NU)的组件之一。但是如果我们只是想用NDD,却要装上一个庞大的NU的活,这让人有点儿不舒服。而且我们还发现NDD虽为NU<的组件之一,但她可以不经过安装而直接运行,这样一来,我们就有可能将NDD从NU中提取出来了。

  当然,想从257个文件和9 个目录共68M的庞然大物中提取我们要想的NDD却是一件不容易的事。不借助什么工具,你没法判断NDD需要哪些文件的支持和调用。Windows的天下,大部分应用程序都不是仅仅一个EXE文件可以搞定,动不动就要调用什么DLL和VXD<的文件。所以在这里我们就需要借助于FileMon来确定NDD所需哪些文件。

<


  好了,先准备好Norton Utilities 2001 的安装文件(见图五)。

  然后在新建一目录Norton Disk Doctor,将NU<安装文件中的Ndd32.exe文件复制到Norton Disk Doctor目录中。为了排除其它因素的干扰,请在打开FileMon之前将关闭其它多余的应用程序。“喂!说你了!快把Winamp关了,想一边干活一边听歌?你还是省省吧。”准备好这些,那可以开工了!

<


  先双击一下Ndd32.exe文件,这时NDD启动出错(见图六)。没关系,我们就是要它在这儿出错。将窗口切换回FileMon,可以看到FileMon已经监视到了不少记录了(图七)。

  赶紧按下“捕捉事件”按钮,出现一红X,暂停对以后事件的监视,这样我们就可以安心地对刚才所发生的事件仔细分析一下了。在主窗口中共有216条件,关键的是哪些了?“#”表示记录号,“Time”是时间,“Process”表示进程,“Request”是操作请求,“Path”是路径,“Result”结果和“Other”结果。了解各栏的含义后才可能真正地懂得如何操作。

  这儿再插一句,在一个应用程序启动时,往往还需要调用其它一些文件,而在调用时找不到所需文件时便会出错。所以刚才仅有一个Ndd32.exe可执行文件NDD是无法执行下去的,找不到调用的文件那肯定是要出错的。所以借用FileMon就是为了找出在Ndd32.exe双击之后还需要调用哪些文件。

  所以在仔细观察了216条记录之后,你会发现前面188个请求的结果都是“Success”,而在第189个请求时,进程“???”试图在当前目录Norton Disk Doctor寻找一个名为S32krnll.dll的文件,结果却是“NotFound”,接着又试图在C:\Windows\System 、C:\windows\和C:\Windows\Commmand目录下寻找这个文件,结果还是找不到。这时,第194个请求发出了一个“Close”的请求,对此Ndd32.exe给出了一个“Success”的结果,“Other”中也注明了“Close_Final”。由此可得,Ndd32.exe的启动过程到194结束,然后出现了这个出错窗口(图六,见上)。

  确定之后,从NU安装目录中找到了这个S32krnll.dll文件,复制到Norton Disk Doctor目录下。为了验证一下以上判断是否正确,我们再试一次。将FileMon主窗口内容清空,按下“捕捉事件”按钮,回到监视状态。再双击Ndd32.exe,结果还是出错。

  不要恢心,看看FileMon为我们又监视到了什么(图八)。

  这一次,“???”进程对S32krnll.dll文件发出的“Seek”和“Read”请求都得到“Success”的结果,而NDD启动卡壳是在寻找一个名为s32stat.dll的文件找不到的情况下才发出了“Close”的请求。所以,我们还缺个s32stat.dll文件。

  同样的办法,在多次反复地尝试之下,我们终于找齐了NDD启动时所需的全部文件(图九)。以下便是这些文件的列表:


Mfc42.dll、N32dlist.dll、Ndd32.exe、Ndd32.dat、Ndd32.hlp(帮助文件,可选)、Nddeng.dll、Nuabout.dll、Nuintro.dll、Numisc.dll、Nusplash.dll(启动画面)、S32dmapl.dll、S32fatl.dll、S32guil.dll、S32krnll.dll、S32maill.dll、S32nptl.dll、S32stat.dll、S32utill.dll、Symcom.dll、Symkrnll.vxd、Symkrnll.dll、Tkke16l.dll和Tkke32l.dll共23个文件,4.12M。

  测试完毕之后,我们就可以将这些23个文件打包了,采用RAR格式压缩后只有1.3M,而用另类的Imp格式压缩仅有1.2M,一张软盘就完全可以搞定了(图十)。做好之后放在网上,便可以向大家宣布这是由“XXX工作室”制作的Norton Disk Doctor 精简版,欢迎大家前来下载。看着不断跳动的下载数字,你是不是有了一种小有成就的感觉呢?

  怎么样?通过这个实例,想必您对FileMon的使用会有了一定的了解了吧。其实,只要你肯去动脑筋,你会发现FileMon还有许多更绝的功能,怎样使用就看你自己想做什么了!

  在FileMon的使用过程中,如果您有什么好的心得的话,欢迎您来信告诉我,我的地址是http://www.kunstudio.comkoya@kunstudio.com

关闭本窗口


©Copyright By KunStudio.com 2000,All rights reseved.