问题背景
反编译一个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):
解决办法:将Form1
的namespace
命名空间改成NoticePop_crack.NoticePop
,也就是变相的将resx
资源文件指向正确的路径,问题完美解决!
关系图如下: