时间:2021-05-02
在《如何使.Net 程序脱离.net framework框架》一文中介绍了让.NET程序脱离.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开头的函数。虚拟注册表系统的框架就完成了,剩下的就是实现了。
这个虚拟框架最核心的就是 设置环境变量 COMPLUS_InstallRoot 。
虚拟注册表系统只是一个扩展。我们还可以再扩展一下,增加一个虚拟文件系统。这样就可 以做成像 xenocode vas 那样了。把整个程序部署成单一文件。来源:紫雨轩 .Net - 博客园
本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
.NET不是一种语言,是微软开发的一种框架,为了方便理解,可以当成微软版的Java虚拟机,不过,NET框架要远比Java虚拟机强大。NET是框架,和java、C
此文档将使用AjaxPro.Net框架实现Ajax功能:在客户端异步调用服务端方法。AjaxPro.Net是一个优秀的.net环境下的Ajax框架,用法很简单,
本文实例讲述了Asp.net配合easyui实现返回json数据的实现方法。分享给大家供大家参考。具体如下:最近想用asp.net配合easyui开发一个小框架
基于ASP.Net+easyUI框架上传图片,实现图片上传,提交表单://检查图片的格式是否正确,同时实现预览functionsetImagePreview(o
Quartz.net是作业调度框架,具体内容如下1.项目中添加quartz.net的引用(这里使用nuget管理)新建一个类TimingJob,该类主要用于实现