幽 幽云渔者 Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-06 #1 请问如何实现程序自己把配置文件写入自身? 也就是我把配置文件先通过其他程序写入程序自身,当程序运行时自动把文件释放出来(这一点已经实现),根据情况程序再重新写入一些信息到配置文件中,在程序结束时,把那个配置文件再写入自己的尾部。先谢谢了
请问如何实现程序自己把配置文件写入自身? 也就是我把配置文件先通过其他程序写入程序自身,当程序运行时自动把文件释放出来(这一点已经实现),根据情况程序再重新写入一些信息到配置文件中,在程序结束时,把那个配置文件再写入自己的尾部。先谢谢了
S sz_toto Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-06 #2 提供一个思路,在程序结束的时候调用rar把配置文件和自己压缩在一起(自解压)即可实现.
L linuxping Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-06 #3 to sz_toto: 不 是个 好 方法~ 但我 也 不 知道 怎么做~~
李 李翔鹏 Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-06 #4 只会释放,不会再写回去,释放可以把文件放在资源文件中,再放回去就不会了,学习。
V Vision Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-07 #5 在写入自身前,先把自身复制一份,把新的配置文件附加到复制的那一个EXE后面,退出时,把新加配置文件的EXE复制回来,复盖自已(可以在退出时,写个批处理来做这最后一步)。 以上是我写传奇登陆器配置器所用的方法。
在写入自身前,先把自身复制一份,把新的配置文件附加到复制的那一个EXE后面,退出时,把新加配置文件的EXE复制回来,复盖自已(可以在退出时,写个批处理来做这最后一步)。 以上是我写传奇登陆器配置器所用的方法。
幽 幽云渔者 Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-08 #6 TO:Vision 你的方法,确实可行,但我想做的是写入程序本身,我觉得应该可以做到,只是自己的水平实在太差,只能请大富翁们帮帮忙了。 总之要谢谢大家的参与。希望大家能提出更好的解决方法,或者能动态更新资源也可以,但这个我也不会做,哈哈……
TO:Vision 你的方法,确实可行,但我想做的是写入程序本身,我觉得应该可以做到,只是自己的水平实在太差,只能请大富翁们帮帮忙了。 总之要谢谢大家的参与。希望大家能提出更好的解决方法,或者能动态更新资源也可以,但这个我也不会做,哈哈……
幽 幽云渔者 Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-08 #8 只有想不到,没有办不到的事,这种程序肯定是可以实现的,只是你我的水平有限而已。
白 白河愁 Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-08 #9 主观思想能敌得过客观现实得时候就可以了,你自己作个操作系统吧,那就支持了。
潕 潕牁慦藥 Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-11 #11 见过那个下载者的源码吧 BAIDU 上面一搜索 一大堆 建议使用那个SERVER生产的原理! 理论上可以达到你想要的效果!
L linuxping Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-12 #12 多谢潕牁慦藥! 但“下载者”搜索结果太多,潕牁慦藥指的是哪个?
L linuxping Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-14 #13 我想把程序中使用的数据库都放到EXE中去~~ 不知道怎么做~~ 帮楼主顶了(也帮自己)
幽 幽云渔者 Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-17 #14 这个问题,我还没有解决,希望大家断续顶下去,肯定会有办法的. 提个思路,把一些字符串制作成资源,然后程序可以修改字符串内容,不知道能不能行,我自己还没有搞定,大家试试看能行不?
L linuxping Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-17 #15 我想把程序中使用的数据库都放到EXE中去~~ 不知道怎么做~~ 帮楼主顶了(也帮自己)
Q qiuyan81 Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-18 #16 我只试过 这样的结构,合并程序A.EXE 被合并程序B.EXE 配置文件C.ini A.EXE 读取文件流B.EXE ,再读取文件流C.INI 声明一个integer变量 fileLong 用来存储文件流B.exe的长度 把文件流C.INI 复制到文件流B.EXE的结尾 最后把integer写到B.EXE的结尾 分解程序时进行反操作就可以了.
我只试过 这样的结构,合并程序A.EXE 被合并程序B.EXE 配置文件C.ini A.EXE 读取文件流B.EXE ,再读取文件流C.INI 声明一个integer变量 fileLong 用来存储文件流B.exe的长度 把文件流C.INI 复制到文件流B.EXE的结尾 最后把integer写到B.EXE的结尾 分解程序时进行反操作就可以了.
L linuxping Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-18 #17 也就是说,运行前先要把文件"还原"......没什么用途!
U ufo Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-18 #18 给个可行的方案: 1。用api MoveFileExW 把你正在运行的文件移动到临时文件夹。 2。在原先的执行目录内创建一个新的修改了数据的exe文件。 3。每次启动你的程序后你都检查一下临时文件夹内是否有你的垃圾文件,有就删除。为何不能在程序退出时删除临时文件?因为程序退出前那个文件处于锁定状态,删不掉的。而你的程序下一次运行的时候,已经是运行的新的程序了,原临时文件才可以删除。 这个方法也是微软用来替换正在运行的系统文件的方法,不同的是微软是把临时文件路径加入注册表的系统启动时删除列表。当然你也可以把临时文件加入注册表的相应键值下,让系统启动时删除临时文件。
给个可行的方案: 1。用api MoveFileExW 把你正在运行的文件移动到临时文件夹。 2。在原先的执行目录内创建一个新的修改了数据的exe文件。 3。每次启动你的程序后你都检查一下临时文件夹内是否有你的垃圾文件,有就删除。为何不能在程序退出时删除临时文件?因为程序退出前那个文件处于锁定状态,删不掉的。而你的程序下一次运行的时候,已经是运行的新的程序了,原临时文件才可以删除。 这个方法也是微软用来替换正在运行的系统文件的方法,不同的是微软是把临时文件路径加入注册表的系统启动时删除列表。当然你也可以把临时文件加入注册表的相应键值下,让系统启动时删除临时文件。
C chbqq Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-18 #19 brcc32 啊,运行的时候解出来读取就行了,关闭后删掉就ok了,我以前把一整个网页的文件放进去
D ddzhouqian Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-18 #20 看了下,大部分的答案都能实现,ufo的没弄过,第一次听说,可以去尝试下