69,371
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include <Windows.h>
BOOL updateResource(char *pszTmpFile, LPBYTE lpBuffer, DWORD dwBufferSize, DWORD dwSrcId)
{
HRSRC hResource;
BOOL bRet = FALSE;
hResource = (HRSRC)BeginUpdateResource(pszTmpFile, FALSE);
if (NULL != hResource)
{
if (UpdateResource(hResource, RT_RCDATA, MAKEINTRESOURCE(dwSrcId), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)
, (LPVOID)lpBuffer, dwBufferSize) != FALSE)
{
EndUpdateResource(hResource, FALSE);
bRet = TRUE;
}
}
return bRet;
}
BOOL deleteResource(char *pszTmpFile, DWORD dwSrcId)
{
HRSRC hResource;
BOOL bRet = FALSE;
hResource = (HRSRC)BeginUpdateResource(pszTmpFile, FALSE);
if (NULL != hResource)
{
if (UpdateResource(hResource, RT_RCDATA, MAKEINTRESOURCE(dwSrcId), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)
, NULL, 0) != FALSE)
{
EndUpdateResource(hResource, FALSE);
bRet = TRUE;
}
}
return bRet;
}
int _tmain(int argc, _TCHAR* argv[])
{
char szCurrentDirectory[MAX_PATH] = { 0 };
char szDistFileName[MAX_PATH] = "newfile.exe";
char szMyName[MAX_PATH];
GetModuleFileName(NULL, szMyName, MAX_PATH);
GetCurrentDirectory(MAX_PATH, szCurrentDirectory);
CopyFile(szMyName, szDistFileName, 0);
char szResource[] = "aaaaaaaaaaaaaaaaaaa";
updateResource(szDistFileName, (LPBYTE)szResource, 1 + strlen(szResource), 2000);
deleteResource(szDistFileName, 2000);
return 0;
}