请教从资源中启动EXE的方法,以前的做法没有安全性.
我现在写的软件里有个证书生成器,这个文件是做为主程序的资源被加载在程序里的.当需要调用时自动把这个生成器写到某个目录下,然后运行. 但现在出于安全角度考虑,不允许这个生成器文件写到本地磁盘. 请教各位如何实现.
下面是老的做法
CString strFile;
strFile = _T("C:\\Certificate.exe");
HINSTANCE HInstance = AfxGetInstanceHandle();
HRSRC hResInfo;
HGLOBAL hRes;
//寻找资源名
hResInfo = FindResource(HInstance,(LPCSTR)(IDR_EXE_SERVER),"EXE");
hRes = LoadResource(HInstance,hResInfo ); // Load it
DWORD dFileLength = SizeofResource( HInstance, hResInfo ); //计算EXE文件大小
CFile file;
if(file.Open( strFile, CFile::modeCreate | CFile::modeWrite, NULL))
{
file.WriteHuge((LPSTR)hRes,dFileLength); //写入临时文件
file.Close();
if(IsFileExist(strFile))
{
// 启动程序
ShellExecute(NULL,"open",strFile,NULL, NULL, SW_HIDE);
}
}
FreeResource(hRes);