如何做一个两栖程序?如同Win9x中的regedit.exe?各位富翁你做个这样的程序吗?(100分)

  • 主题发起人 主题发起人 Kingron
  • 开始时间 开始时间
K

Kingron

Unregistered / Unconfirmed
GUEST, unregistred user!
呵呵,这又是一个比较容易的题目?注意:这个程序可是要在纯Dos方式和图形方式都要运行的。
Windows的安装程序和regedit.exe都是这种程序,用Delphi如何编程?
<font color=red>
我怕丢分又不解决问题,所以先给100分,如果解决问题,再给100分。</font>
 
32-bit 应用程序好像不能做成这样,我记得 16-bit stub 应用程序的大小是固定的。
16-bit Windows 应用程序可以在编译以后使用程序员大本营 I (2 CD)上的一个工具
换掉 dos stub。
Win 9x 的安装程序是 16-bit 的。Regedit 就不知道了。
 
一般的话,编译的时候有一个程序(dos下运行)是可以替换的,
这个程序是已经编译好的,不过delphi用的是哪个我也不知道,呵呵。
 
这是您的补充回答,
shellexecute(handle,'open','regedit.exe',' /e YourWantExportKey YourBackUpFilename','',sw_hide)
能举个例子吗?如
shellexecute(0,'open','regedit.exe',' /e HKEY_LOCAL_MATION/SOFTWARE/Test/ C:/temp/temp.reg','',sw_hide)
我试了一下,没有成功,多谢多谢。
 
Sorry 上次说错了
The MS-DOS Stub is a valid application that runs under MS-DOS and is placed
at the front of the .EXE image. The linker places a default stub here, which
prints out the message "This program cannot be run in DOS mode" when the image
is run in MS-DOS. The user can specify another stub by using the /STUB linker
option.
//////如何替换自己的 stub 程序
At location 0x3c, the stub has the file offset to the Portable Executable (PE)
signature. This information enables Windows NT to properly execute the image
file, even though it has a DOS Stub. This file offset is placed at location
0x3c during linking.
 
你可以自己写一个简单的程序,功能是把某个 dos exe 文件(假设是 a.exe)的长度写入
该文件的 0x3c处。然后假设已经有一个 b.exe 是 32-bit windows exe。
1,
copy a.exe + b.exe c.exe
2,
edit /b /078 c.exe
3.
编辑文件首先找到第二个 MZ,删除从 MZ 到 PE(包括MZ ,不包括PE)的所有字符。
保存。
 
不是两栖程序,而是两个不同的程序粘合在一起的,就是所谓的stub。
 
To Shd:
不好意思,有点儿小错误,应该为:
shellexecute(0,'open','regedit.exe',' /e c:/temp/abc.reg HKEY_LOCAL_MATION/SOFTWARE/Test','',sw_hide)
路径和文件名参数刚好错了位!
 
我实验成功了。
多谢,我另开一个话题,请您来拿分。200分,请笑纳,多谢多谢。
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=489016
 
还有谁又补充说明没有?
To mikedeakins:
另外100分在这儿:
<a href="http://www.delphibbs.com/delphibbs/DispQ.asp?LID=490222">http://www.delphibbs.com/delphibbs/DispQ.asp?LID=490222</a>
 
倒~~~~~~~~~~~
弄错了,另外100分在这儿:
<a href="http://www.delphibbs.com/delphibbs/DispQ.asp?LID=490229">http://www.delphibbs.com/delphibbs/DispQ.asp?LID=490229</a>
 
接受答案了.
 
后退
顶部