先下载中国移动的飞信安装程序,然后进行安装,将其安装目录下的VMDotNet文件夹COPY出来。
在该目录中有一个 v2.0.50727文件夹 ,进入这个文件夹,里面有一个FetionVM.exe的可执行文件(飞信的图标),这个便是我们要利用用的虚拟机主执行程序,其实现机制暂且不考虑。该程序带入一个参数,即要在此虚拟环境下运行的程序的路径,如C:/WINDOWS/regedit.exe,也可以使用相对目录。
我采用 Dev-C++ 编写了一个入口程序,代码如下:
#include <windows.h>
int main()
{
char sCommandLine[MAX_PATH];
PROCESS_INFORMATION pi;
STARTUPINFO si = {sizeof(si)};
if (CreateProcess(NULL,"FetionVM.exe C:/WINDOWS/regedit.exe",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi)) /*启动"注册表"作为子进程
被调用对象在这里是个示例,请根据自己需要设置路径,也可以使用相对路径,请将来该路径设置成我们需要运行的.NET应用程序。*/
{
CloseHandle(pi.hThread);//关闭子进程的主线程句柄
//WaitForSingleObject(pi.hProcess, INFINITE);// 等待子进程的退出 注释掉该句 调用对方后马上关闭自身
CloseHandle(pi.hProcess);// 关闭子进程句柄
}
}
用Dev-C++编译该段代码,生成的EXE存放于 FetionVM.exe同一目录,运行生成的该EXE既可实现无框架运行.NET 托管应用程序。