VC++编程实现修改EXE文件图标

这篇博客详细介绍了如何使用VC++编程来修改EXE文件的图标,涉及关键函数如LoadLibrary、FindResource、UpdateResource等。作者分享了在修改过程中遇到的问题及解决思路,包括理解ICON结构和资源偏移,以及如何避免错误如使用CreateFile时的陷阱。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚才发现论坛上面有网友问:如何通过编程实现修改EXE文件的图标,类似于 熊猫烧香 的效果!自己也对这个比较感兴趣网上找了找,找到了两种方法,可以满足大家都要求了,这里面收集转载过来,大家可以实践下,看看好不好用,起码有代码可以参考:

方法一:通过API编程实现:

这个问题以前在优快云上解答过,但是当时只是提了提几个要用到的函数,自己并没有去动手写实现。前几天和某人讨论这个问题,他认为只有通过PE内部的资源偏移才好改,熊猫烧香就是这么搞的,而我坚持API也可以的观点。后来我想了想觉得这个问题值得记住,并自己亲手把它写出来并试验成功。贴出代码来给大家分享:

EnableDebugPrivilge(SE_DEBUG_NAME,TRUE);
HGLOBAL hResLoad(NULL);     
HANDLE hExe(NULL);       
HRSRC hRes(NULL);        
HANDLE hUpdateRes(NULL);  
char * lpResLock;  
BOOL result;
hExe = LoadLibrary(_TEXT("D:\\Src.exe"));
if (hExe == NULL)
{
   AfxMessageBox("加载Src.exe失败.",0,0);
}
hRes = FindResource((HMODULE)hExe, (LPCSTR)1, RT_ICON);
if (hRes == NULL)
{
   AfxMessageBox("不能定位Src.exe中的第一个图标");
}
hResLoad = LoadResource((HMODULE)hExe, hRes);
if (hResLoad == NULL)
{
   AfxMessageBox("不能加载该图标资源");
}
lpResLock =(char *)LockResource(hResLoad);
if (lpResLock == NULL)
{
   AfxMessageBox("不能锁定该资源.");
}
hUpdateRes = BeginUpdateResource("G:\\Target.exe", FALSE);
if (hUpdateRes == NULL)
{
   AfxMessageBox("不能打开Target

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值