exe程序怎么生成exe?

zgj828 2009-03-29 08:30:21
RT! 应用程序根据用户的配置生成exe文件!
...全文
316 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluebee2009 2009-03-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 shaochem 的回复:]
关于写入配置信息,有两种方法,一是在导入的资源里写好预定义的配置信息,在生成的时候16进制定位查找相应的配置信息来替换,二是使用结构体把配置信息写入到文件结尾,生成的服务端程序直接读取里面的信息
[/Quote]

这解决方案不错,也是我一直使用的方法。
写一个脚本解释器(run.exe),一个脚本编辑器(ide.exe),在实际工作时,就是ide.exe拷贝一份run.exe出来并灌入用户编写的脚本,而run.exe在运行时直接解释执行其中的脚本就可以了。

往run.exe中灌入脚本之后,可以按脚本文件的名称修改名称。
这里的脚本,也可以是你提出的所谓的配置信息了。
  • 打赏
  • 举报
回复
去搞个VS的SDK。。
ljluck7687 2009-03-29
  • 打赏
  • 举报
回复
如果这些配置信息比较固定(是已知而不是未知的),自己先根据配置信息做好一个或多个Exe文件,然后将其作为资源打包进主程序中,而在主程序中根据配置信息动态地释放目标Exe文件即可。这是一种解决办法
「已注销」 2009-03-29
  • 打赏
  • 举报
回复
关于写入配置信息,有两种方法,一是在导入的资源里写好预定义的配置信息,在生成的时候16进制定位查找相应的配置信息来替换,二是使用结构体把配置信息写入到文件结尾,生成的服务端程序直接读取里面的信息
zgj828 2009-03-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 oyljerry 的回复:]
引用 4 楼 zgj828 的回复:
[Quote=引用 1 楼 oyljerry 的回复:]
生成PE文件?

不知道PE
比如用户在A程序中配置要生成个弹出 "你好 "对话框的程序! 然后A程序根据配置生成B.exe
运行B.exe 弹出 "你好 " 对话框!
[/Quote]
这看上去就是一个编译器了
这个编译器还帮你生成了代码
[/Quote]
有办法做吗?
华亭真人 2009-03-29
  • 打赏
  • 举报
回复
LS这样写出来的EXE可以运行吗
oyljerry 2009-03-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zgj828 的回复:]
[Quote=引用 1 楼 oyljerry 的回复:]
生成PE文件?
[/Quote]
不知道PE
比如用户在A程序中配置要生成个弹出 "你好 "对话框的程序! 然后A程序根据配置生成B.exe
运行B.exe 弹出 "你好 " 对话框!
[/Quote]
这看上去就是一个编译器了
这个编译器还帮你生成了代码
「已注销」 2009-03-29
  • 打赏
  • 举报
回复
先了解几个API:
FindResource:查找一个资源。由于我们是要将这个服务端作为EXE的自定义资源形式放在EXE之中,所以在释放它之前必须首先找到它才可以。
SizeofResource:获得资源的尺寸,装载资源时使用。
LoadResource:装载资源,将资源的二进制数据装载到内存中。
LockResource:锁定资源,将内存中的资源数据锁定。

首先将你要生成的exe作为二进制文件导入资源,在“Resource Type”中随意填写你的资源类型,然后编写代码:
BOOL Create()
{
HRSRC hResInfo;
HGLOBAL hResData;
DWORD dwSize, dwWritten;
HANDLE hFile;

// 查找所需的资源,IDR_SERVER为你导入的资源id,server为类型
hResInfo = FindResource( NULL, MAKEINTRESOURCE(IDR_SERVER), "Server" );

if
( hResInfo == NULL )

return
FALSE;

// 获得资源尺寸
dwSize = SizeofResource( NULL, hResInfo );

// 装载资源
hResData = LoadResource( NULL, hResInfo );

if
( hResData == NULL )

return
FALSE;

// 写文件
hFile = CreateFile( "C:\\Server.exe", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL );

if
( hFile == NULL )

return
FALSE;
WriteFile( hFile, (LPCVOID)LockResource( hResData ), dwSize, &dwWritten, NULL );
CloseHandle( hFile );

return
TRUE;
}
zgj828 2009-03-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oyljerry 的回复:]
生成PE文件?
[/Quote]
不知道PE
比如用户在A程序中配置要生成个弹出"你好"对话框的程序! 然后A程序根据配置生成B.exe
运行B.exe 弹出"你好" 对话框!
oysoft 2009-03-29
  • 打赏
  • 举报
回复
你自己写编译器?
IONPhantom 2009-03-29
  • 打赏
  • 举报
回复
那不就是编译器么
oyljerry 2009-03-29
  • 打赏
  • 举报
回复
生成PE文件?

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧