UpdateResource:为什么少了1K????

wula0010 2019-05-26 11:02:09
一个简单的UpdateResource例子,先UpdateResource增加资源,再用UpdateResource删除资源,结果newfile.exe文件比原文件少了1Kb, 为什么???我要删除一个资源,除了UpdateResource,还有其他办法么?UpdateResource增加资源没有问题,因为用其他办法可以把增加的资源恢复出来。


#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;
}


...全文
70 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
636f6c696e 2019-05-27
  • 打赏
  • 举报
回复
少1KB不代表有问题吧
wula0010 2019-05-27
  • 打赏
  • 举报
回复
没人用过么?????

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧