收藏本站 
广告服务 
网站地图 
>> 本频道近100000余篇各类电脑技术、网络技术、软件技术、网页及平面设计等方面的电脑教程,我们的原则:不是精华拒不收录!
先飞电脑技术网技术文章网络编程ASP.Net
网络编程 | 网站建设 | 网络技术 | 设计教程 | 软件教学 | 程序开发 | 数据库开发 | 教育认证 | 硬件维护 | 媒体动画 | 机械电子 |

ASP.Net虚拟框架的实现原理

[ 作者:佚名    转贴自:网络转载    阅读次数:18    更新时间:2007-9-26 10:49:00   录入:刘光勇 ]        
    前面介绍了利用第三方虚拟环境来实现 .Net程序脱离框架运行,并介绍了如何自己编写加载器程序。

  今回我们介绍虚拟框架的核心实现原理,感兴趣的朋友可以参考自己实现。  

  在 让 .Net 程序 脱离 .net framework框架 运行(源代码实现说明) 中我们介绍的脱

  离框架运行的方法,仍然需要依赖 rsdeploy.dll 才行。

  今回我们就介绍这个 dll 的实现原理。  

  简单的实现方式:

  首先我们需要用到一个 undocumented features ,

  在dll被加载时,设置环境变量 COMPLUS_InstallRoot 为当前dll所在目录。

  另外复制 c:\windows\microsoft.net\framework\v1.14322 或者 v2.0.50727 到 dll所在目录。

  把mscoree.dll 以及crt运行库放到 dll目录中。

dll目录中创建一个本地的 GAC 目录,再把 需要的 GAC assemblies 复制进去。  

  这样子就 OK 了,简单的 .Net程序就可以在这个环境中运行了。  

  如果是复杂的程序 还需要实现一个虚拟注册表系统。

  对于我们虚拟框架这个应用来说,只需要实现一个只读的虚拟注册表就OK了。  

  这个实现可以 ring0 也可以 ring3,考虑到兼容性 直接用ring3实现好了。

  实现方式可以使用 api hook的方式,即在我们的dll加载时 hook advapi32.dll 中所  

  有Reg开头的函数。虚拟注册表系统的框架就完成了,剩下的就是实现了。  

  这段时间忙着做DNGuard的官方网站 http://www.dnguard.net/ ,英文的基本完工了,  

  中文的还没做,现在还得开发一个网站的客户中心。

  等网站的事结了,就发布DNGuard hvm的专业版。在之后看看时间上的安排,有空的话会考虑自己实现一下这个虚拟框架,做一个小工具出来。  

  这个虚拟框架最核心的就是 设置环境变量 COMPLUS_InstallRoot 。

  虚拟注册表系统只是一个扩展。

  我们还可以再扩展一下,增加一个虚拟文件系统。这样就可以做成像 xenocode vas 那样了。把整个程序部署成单一文件。
文章首页【加入到收藏夹】告诉好友】【打印此文】【关闭窗口
  版权声明:本站提供的“ASP.Net虚拟框架的实现原理”版权归文章所有者,转载请注明出处!
 ·上一篇文章:ASP.NET 2.0 MasterPage技巧总结      ·下一篇文章:.Net业务平台的数值精度陷阱与解决方法
相关文章
·ASP连接11种数据库语法总结[59]
·Asp+Sql对数据库的各种操作[18]
·改mdb为asp所带来的灾难[72]
·Flash广告播放器开发详解[44]
·ASP的URL解码函数[100]
网站主页 | 收藏本页 | 联系我们 | 广告服务 | 站点地图 | 会员注册 | 招聘信息 | 内容指正

联系QQ:先飞电脑技术网站事务联系QQ,点击可以直接留言. 32933427 电话:13710542091 [世界排名] 鄂ICP备05005890号 先飞电脑教程网