怎么把一个程序写进我的程序运行时再释放?也就是运行时生成它,我再调用运行它。怎么办呀。????

解决方案 »

  1.   

    将你的程序以资源形式保存在程序中,释放出来代码如下:res2file(MAKEINTRESOURCE(IDR_HOOKDLL),"HOOK",szPath);/************************************************************************/
    /* 从资源中取出另存                                                     */
    /************************************************************************/
    int  res2file(LPCTSTR lpName,LPCTSTR lpType,LPCTSTR filename)
    {
    //输入:lpName 为资源名,可用MAKEINTRESOURCE宏将整型变为字符串。
    //LpType  为串类型名
    //Filename  为释放出的文件名。
    //输出:成功1,失败0
    HRSRC myres = FindResource (NULL,lpName,lpType);
    HGLOBAL gl = LoadResource (NULL,myres);
    LPVOID lp = LockResource(gl);//返回指向资源内存的地址的指针。
    // CREATE_ALWAYS为不管文件存不存在都产生新文件。
    HANDLE fp = CreateFile(filename ,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);

    if (!fp)
    return false;
    DWORD a;
    //sizeofResource 得到资源文件的大小
    if(!WriteFile (fp,lp,SizeofResource(NULL,myres),&a,NULL)) 
    return false;
    CloseHandle(fp);
    FreeResource(gl);
    return true;
    }
    运行的话ShellExecute 或者winexec之类的吧
      

  2.   

    如果这个程序是你自己有源代码编译的,可以直接从内存中启动,
    请看本人拙作Pe研究之:从内存中加载Pe文件(代码重定位,进程隐藏,代码注入)http://blog.csdn.net/lisunlin0/archive/2007/08/17/1748173.aspx