问题描述:
一个C/S模式当中,一个Client,一个Server,Server要实现的功能是双击server.exe文件,将该文件自动复制到某目录中,并将此目录下程序添加到启动项中。
目前进度:已实现自启动,但复制到某目录还没有实现
希望:大家能帮帮我,如能解决定重谢
谢谢大家的关注,这里的程序只是用于局域网管理的一个软件,并不是你们说的东东
最新:复制的问题已经解决,但是像注册表添加启动项的问题又出来了?
问题解答:
这是一段实现你要求功能的代码,把它放到你程序的InitInstance函数中即可.肯定成功,因为我的程序就是这样跑的,下面的示例是复制到临时目录.
TCHAR tcModule[MAX_PATH] = {0};
GetModuleFileName(m_hInstance,tcModule,MAX_PATH); //获取文件自身目录
*(_tcsrchr(tcModule,_T('\\')) + 1) = 0;
if(_tcsicmp(tcModule,tcPath) == 0)
{
//
TCHAR tcTemp[MAX_PATH] = {0};
GetTempPath(MAX_PATH,tcTemp); //要复制到的目标目录
CString csSrcPath,csDestPath;
csSrcPath.Format(_T("%server.exe"),tcPath); //源路径
csDestPath.Format(_T("%server.exe"),tcTemp); //目标路径
CopyFile(csSrcPath,csDestPath,FALSE); //复制文件
ShellExecute(NULL,_T("open"),csDestPath.GetBuffer(0),NULL,NULL,SW_SHOW); //运行目标文件
return FALSE; //返回FALSE源程序就会退出运行状态
//ExitProcess(0);
}
问题没1楼说的那么简单。因为一个文件在运行中是不能被复制的。可以考虑使用另外一个b.exe文件。当server进程结束时,调用b进程,实现server文件的拷贝。
要复制到一个目录, 可以调用 CopyFile 这个函数, 原型为
BOOL CopyFile(
LPCTSTR lpExistingFileName, // name of an existing file
LPCTSTR lpNewFileName, // name of new file
BOOL bFailIfExists // operation if file exists
);
调用时, 先获取到你当前正在运行的 Server.exe 文件的全路径
char szExePath[MAX_PATH];
GetModuleFileName(NULL, szExePath, 255);
然后调用 CopyFile 复制到某个目录, 如
CopyFile(szExePath, _T("C:\\Windows"), TRUE);
这段代码可以放在对话框初始化函数中
你在搞什么东东呀,
他想搞病毒木马,是个小菜鸟!
现在的木马哟,唉