反编译winform资源文件
winform程序,经过.net reflector反编译之后,产生.resources文件不便于VS识别,不能重新编译。在此简单做了一个小工具,就是把.resources文件转化为.resx文件。同时支持批量转换。即一次性浏览选择多个文件,生成之后所有.resx文件放于文件夹resx下面。生成.resx文件之后,一定要拷贝放在相应.cs文件同级目标下,VS就会自动关联起来。然后就可以做相应修改,重编译工作。
在这里我仅是学习性尝试做一个简单的小工具,同时也是拿自己的程序做测试,当然你可尝试反编译别人.net程序,先用reflector反编译之后,再用此工具转化资源文件,但我不支持大家去反编译别人的东西,毕竟要尊重别人的劳动成果和保护知识产权。废话多说了,下面请看界面。
程序界面如下所示:
选择多个文件
转换成功显示如下图所示:
程序代码如下:
View Code
private void btnOK_Click(object sender, EventArgs e)
{
string basePath = string.Empty;
string sFile = string.Empty; //不带路径的文件名
string newFold = "resx";//新文件夹名称
string savePath = string.Empty;
int len = 0;
int index = -1;
string strResx = string.Empty;
if (files != null && files.Length > 0)
{
sFile = files[0];
index = sFile.LastIndexOf("\\");
basePath = sFile.Substring(0, index);//基路径
savePath = string.Format("{0}\\{1}", basePath, newFold);
if (!System.IO.Directory.Exists(savePath))
{
Directory.CreateDirectory(savePath);
}
ResourceReader reader = null;
ResXResourceWriter writer = null;
foreach (string strResources in files)
{
//strResx = sFile.Replace(".resources", ".resx");
sFile = strResources;
index = sFile.LastIndexOf("\\");
len = sFile.Length;
if (index > -1 && len > index)
{
strResx = sFile.Substring(index + 1, len - index - 1).Replace(".resources", ".resx");
}
strResx = string.Format("{0}\\{1}", savePath, strResx);
reader = new ResourceReader(strResources);
writer = new ResXResourceWriter(strResx);
foreach (DictionaryEntry en in reader)
{
writer.AddMetadata(en.Key.ToString(), en.Value);
}
if (reader != null)
{
reader.Close();
}
if (writer != null)
{
writer.Close();
}
}
MessageBox.Show("转换资源文件转换成功", "系统提示");
txtResources.Text = string.Empty;
}
else
{
MessageBox.Show("待转换资源文件不能为空", "系统提示");
}
// string strResources = this.txtResources.Text;
// string strResx = this.txtResx.Text;
//if (string.IsNullOrEmpty(strResources) || string.IsNullOrEmpty(strResx))
//{
// return;
//}
//ResourceReader reader = new ResourceReader(strResources);
//ResXResourceWriter writer = new ResXResourceWriter(strResx);
//foreach (DictionaryEntry en in reader)
//{
// writer.AddMetadata(en.Key.ToString(), en.Value);
//}
//reader.Close();
//writer.Close();
}
{
string basePath = string.Empty;
string sFile = string.Empty; //不带路径的文件名
string newFold = "resx";//新文件夹名称
string savePath = string.Empty;
int len = 0;
int index = -1;
string strResx = string.Empty;
if (files != null && files.Length > 0)
{
sFile = files[0];
index = sFile.LastIndexOf("\\");
basePath = sFile.Substring(0, index);//基路径
savePath = string.Format("{0}\\{1}", basePath, newFold);
if (!System.IO.Directory.Exists(savePath))
{
Directory.CreateDirectory(savePath);
}
ResourceReader reader = null;
ResXResourceWriter writer = null;
foreach (string strResources in files)
{
//strResx = sFile.Replace(".resources", ".resx");
sFile = strResources;
index = sFile.LastIndexOf("\\");
len = sFile.Length;
if (index > -1 && len > index)
{
strResx = sFile.Substring(index + 1, len - index - 1).Replace(".resources", ".resx");
}
strResx = string.Format("{0}\\{1}", savePath, strResx);
reader = new ResourceReader(strResources);
writer = new ResXResourceWriter(strResx);
foreach (DictionaryEntry en in reader)
{
writer.AddMetadata(en.Key.ToString(), en.Value);
}
if (reader != null)
{
reader.Close();
}
if (writer != null)
{
writer.Close();
}
}
MessageBox.Show("转换资源文件转换成功", "系统提示");
txtResources.Text = string.Empty;
}
else
{
MessageBox.Show("待转换资源文件不能为空", "系统提示");
}
// string strResources = this.txtResources.Text;
// string strResx = this.txtResx.Text;
//if (string.IsNullOrEmpty(strResources) || string.IsNullOrEmpty(strResx))
//{
// return;
//}
//ResourceReader reader = new ResourceReader(strResources);
//ResXResourceWriter writer = new ResXResourceWriter(strResx);
//foreach (DictionaryEntry en in reader)
//{
// writer.AddMetadata(en.Key.ToString(), en.Value);
//}
//reader.Close();
//writer.Close();
}
整个工程源码下载如下:
/Files/cgli/ConvertResource.rar
转载请保留原文地址 http://www.cnblogs.com/cgli/archive/2011/04/28/2032262.html
本文来自博客园,作者:陈国利,转载请注明原文链接:https://www.cnblogs.com/cgli/archive/2011/04/28/2032262.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
如果您觉得文章对您有帮助,可以点击文章右下角"推荐"或关注本人博客。您的鼓励是作者坚持原创和持续写作的最大动力!