请确保在编译时已将“namespace.classname.resources”正确嵌入或链接到程序集“namespace”

问题背景

反编译一个c#写的winfrom程序(.net framework 4.5),应用程序名称:

  • NoticePop.exe (原应用程序文件,反编译的不是这个文件)
  • NocicePop_crack.exe (拷贝NoticePop.exe,重命名为NoticePop_crack.exe,反编译的是这个文件)

该程序form1窗体中有一个notifyicon控件,运行时会做以下动作:

  • 设置notifyicon控件可见
  • 隐藏form1窗体
  • 设置在任务栏不可见

目录结构及form1构造函数代码如下:
在这里插入图片描述
在这里插入图片描述

当我运行程序时,根本运行不起来。于是我启用debug调试时发现出现以下错误:
在这里插入图片描述


尝试解决

既然是找不到资源,那么我先尝试着移除资源文件并注释掉相关代码,看还报不报错(当然是不报错了),如下:
在这里插入图片描述
在这里插入图片描述

重新编译后,程序是可以运行了,但桌面右下角没有notifyicon的图标(因为把设置notifyicon突变的代码注释了)!只能从任务管理器中找到该程序进程,右键“切换到”才可以将程序界面显示出来。这显然不是我想要的结果。

解决办法

再看一下目录结构,发现Form1窗体的命名空间与解决方案和项目的名称不相同(这是由于反编译之前更改了应用程序的名称,NoticePop.exe >> NoticePop_crack.exe):
在这里插入图片描述
解决办法:将Form1namespace命名空间改成NoticePop_crack.NoticePop,也就是变相的将resx资源文件指向正确的路径,问题完美解决!

关系图如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值