我想了一下下面的几种方法:(都是自升级就是在a.exe中调用升级)
1.A.exe 升级下载了B.exe(b.exe就是a.exe的升级版本), 如何把b.exe变成a.exe,在什么时机。(a.exe正在运行)
2.在a.exe运行时该a.exe的名字,下载下来的就是a.exe, 什么时候把改了名字的a.exe删除。
3.好像还要自删除的程序也可以码???
1.A.exe 升级下载了B.exe(b.exe就是a.exe的升级版本), 如何把b.exe变成a.exe,在什么时机。(a.exe正在运行)
2.在a.exe运行时该a.exe的名字,下载下来的就是a.exe, 什么时候把改了名字的a.exe删除。
3.好像还要自删除的程序也可以码???
解决方案 »
- 两个工程的结合
- 讨论下GetQueuedCompletionStatus()第3个参数到底有什么要求
- 各位高手进来看一下,小弟感激万分
- 在线急等:一个程序启动之后,如何去跟踪它所捕获的数据????它的数据是放在内存的。
- vb调用vc做的.dll的问题!!!!(急急急)
- 如何通過Tab控件句柄来取得当前的Tab頁?
- 问一个婴儿级问题
- 能否给一段实现VC 中FIND IN FILES的代码
- 请问:哪儿有《21天学会Visual C++数据库编程》的附带光盘源代码下载?谢谢!
- 请问如何从unicode文件中读取数据,如何分出每一个unicode字符??急
- 一个程序运行出错的问题
- 请问win32 里有没有api可以取消后台打印的?
要么通过调用类似LiveUpdate.exe的进程来升级软件,如(QQ,Wom等等)
要么直接在主程序更新,不过更新的是组件,数据文件等等,如(一些杀毒软件的病毒库更新)
--------------------------------------
在运行时可以改自己的名字,以前我听说过,刚才我试验了以下,没有问题可以。#include "stdafx.h"
#include "afxwin.h"int main(int argc, char* argv[])
{
if(argc != 1)
{
return -1;
}
char szNewName[] = "D:\\real_test\\TestApp060727\\Debug\\a.exe";
try
{
CFile::Rename( argv[0], szNewName );
}
catch(CFileException* pEx )
{
#ifdef _DEBUG
afxDump << "File " << argv[0] << " not found, cause = ";
// << e->m_cause << "\n";
#endif
pEx->Delete();
} printf("Hello World!\n");
exit(0);
return 0;
}
不知所云。
a.exe下载b.exe后,运行b.exe,a自删除,b拷贝自身成a.exe
自己查下,可以找到自删除和复制自身的汇编代码