近日对目前较为流行的Asp.Net TreeView 控件的性能进行了测试。如RadTreeView,FlyTreeView,IEWebControlTreeView等。总体感觉,作为一个独立产品,FlyTreeView的外观更为俏丽,性能也最为丰富,可谓精雕细琢。用它遍历服务器硬盘,仿真资源管理器目录的速度是非常快的;它所具有的独一无二的异步加载功能,对那些梦想把全部数据都绑定到一个Web树上,又不想影响客户端加载速度的程序开发者来讲,FlyTreeView切实能使我们鱼肉和熊掌兼得。用过一段时间的IEWebControlTreeView,深感其性能的平平,反应的迟缓,因而一见到FlyTreeView for ASP.NET 3.1 便爱不释手,FlyTreeView for ASP.NET 3.2 出来以后便立即下载了一个。由于试用期过后必须调整“座机”的系统时间才能继续使用,感觉很不方便,便决定自己动手,延长一下试用期,也借机学习一下优秀软件的编制技巧,了解一些书本上得不到的知识。
一、环境准备
1、基本环境:Microsoft Visual Studio .NET 200X开发环境和IIS服务。
2、PATH环境:为方便在命令行上使用有关工具,需要确保更新系统的PATH环境变量。以使系统能在任何目录下都能找到所需的.NET工具。为此,需要将 X:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin和X:\winnt\Microsoft.NET\Framework\v1.1.4322(v1.0.3705)这两个目录的完整路径添加到PATH环境变量字符串的末尾,如(图一):
另外,为确保在任何目录下都能进入命令行,须对文件夹的右键菜单添加一个进入命令行的快捷选项。其方法见(图二)。这样,在资源管理器中当对需要进入命令行的文件夹右击鼠标的时候,就会出现图三的画面,选择“进入命令行”即可,免去了手工键入全路径的繁琐过程,见(图三)。
二、工具准备
1、反编译器:代码分析工具我用的是Reflector 4.1.6.0 的试用版,可从 http://www.aisto.com/roeder/dotnet/下载最新版本,Reflector 可以将目标代码反编译成IL、C#、VB.NET、 Delphi四种语言,可供你根据自己的语言习惯进行选择。 Reflector 试用版装载后如果出现过期问题,可通过调整系统时钟予以解决,当然,也可以试着用Reflector自己把Reflector的代码分析一下将这个问题解决了,但不这样做也不影响我们的后续工作。将控件完整的反编译成破解档的工具就使用环境中已有的Microsoft免费提供的MSIL反汇编器ILDASM。经过第一步的准备,我们已经可以在需要的时候在任何目录中调用它。
2、汇编程序:使用环境中已有的Microsoft免费提供的MSIL汇编程序ILASM,通过使用 Ilasm.exe 运行我们破解处理过的ILDASM生成的有关文件以生成最终的破解控件。同 ILDASM 一样,经过第一步的准备,我们已经可以在需要的时候在任何目录中调用它。
3、其他工具:记事本、计算器等,均为系统默认的工具、软件。
三、破解过程
1、安装FlyTreeView:运行FlyTreeView_for_ASP_Setup.3.2.exe,并注意安装过程中选中安装示例Web应用程序。如(图四):
在浏览器中浏览示例页面,控件未过期时的正常画面如(图五):
将系统时钟向后调整(如一年)后,再次浏览上述页面,则控件立即抛出异常如下(图六):
2、控件分析:
在你喜欢的位置新建一文件夹,姑且起名为“FlyTreeView破解”,作为我们的工作目录;将示例站点bin目录中的NineRays.Web.UI.WebControls.FlyTreeView.dll拷贝一份到工作目录;用记事本在我们的工作目录里再新建两个批处理文件,以方便后续工作,代码如下:
基本准备就绪后,启动 Reflector 打开工作目录中的NineRays.Web.UI.WebControls.FlyTreeView.dll,如(图七)