首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由于与64位版本的Windows不兼容,从字节数组重新创建的可执行文件无法运行

由于与64位版本的Windows不兼容,从字节数组重新创建的可执行文件无法运行
EN

Stack Overflow用户
提问于 2021-04-23 19:47:24
回答 1查看 48关注 0票数 1

我将一个.exe文件作为文件存储在控制台应用程序的资源中。我有一个函数可以读取文件的二进制数据,然后重新创建一个文件:

代码语言:javascript
运行
复制
private static byte[] GetScriptFromResources(string fileName)
{
    byte[] data = null;
    Assembly assembly = Assembly.GetExecutingAssembly();
    Stream fileStream = assembly.GetManifestResourceStream(ResourceStream);

    if (fileStream != null)
    {
        var resourceReader = new System.Resources.ResourceReader(fileStream);

        resourceReader.GetResourceData(fileName, out string _, out data);
    }

    return data;
}

var myFile = GetScriptFromResources(MyResourceName);
File.WriteAllBytes(Directory.GetCurrentDirectory() + "\\" + myFile + ".exe", myFile );

当我运行myFile.exe时,我得到一个错误“不支持的16位应用程序”和“无法运行由于与64位版本的视窗不兼容”

如果我运行原始的myFile.exe,它可以工作,但如果我从字节数组重新创建它,它就不能工作。如何使用与原始版本相同的位版本重新创建文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-23 20:22:44

按照建议,我使用十六进制编辑器来查看原始文件和重新创建的文件之间是否存在差异。

如果我使用下面的语句获得字节数组:

代码语言:javascript
运行
复制
byte[] myFileByteArray = MyConsoleApp.Properties.Resources.myFile

与使用我的函数并重新创建文件不同,十六进制编辑器没有显示任何差异,并且可执行文件与原始文件一样工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67229413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档