资源大全 | 神秘文化 | 在线翻译 | QQ专区 | 视频教程 | 彩信频道 | 搜索引擎 | BT下载 |  | 网站地图
设为首页
加入收藏
联系站长
您现在的位置: 一百网络 >> ASP.NET编程 >> 其他相关 >> 文档正文
最近更新
普通文档 .Net 虚拟框架的实现原理
普通文档 优秀ASP.NET程序员的修炼
普通文档 toString方法无法被继承
普通文档 也说Linq动态条件查询
普通文档 使用Linq实现强类型反射
普通文档 java和.net的对象类型转
普通文档 新闻采集应用程序
普通文档 《Visual Studio.NET Ti
普通文档 深入理解 ASP.NET 动态控
普通文档 NBearV3 Step by Step教
推荐文章
推荐文档 用Visual C#开发WinFor
推荐文档 使用C#编写Windows Form
推荐文档 在ASP.NET中面向对象的编
推荐文档 Huffman 编码简介
推荐文档 纯数字化文本框的WEB控件
.Net 虚拟框架的实现原理

文章作者:未知 录入时间:2007-9-18 来源:未知
网站声明:本站的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出处和原始作者,文章版权归本网站与文章作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。

在 让 .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 那

样了。把整个程序部署成单一文件。

  • 上一篇文档:

  • 下一篇文档: 没有了
  •     查找更多“.Net 虚拟框架的实现原理”的内容  
    相关连接
  • 实战 HTTP 处理程序(HTTP Handler) (6)---条码随意打

  • 实战 HTTP 处理程序(HTTP Handler) (5)---不用临时文件,直接打开动态生成的文件

  • 实战 HTTP 处理程序(HTTP Handler) (4)--与Web程序共享Session

  • 实战 HTTP 处理程序(HTTP Handler) (3) -- 动态生成图片

  • 实战 HTTP 处理程序(HTTP Handler) (2) -- 向HTTP 处理程序传递参数