gpt4 book ai didi

.net - 从 C 中的缓冲区运行程序集 .exe

转载 作者:太空狗 更新时间:2023-10-29 16:31:20 27 4
gpt4 key购买 nike

我正在从事与沙盒技术相关的项目。

目前我正在编写一个 C 程序,它从远程 Web 服务器获取一个小程序集 .exe 二进制 (.NET)。这个二进制文件存储在内存中(永远不要接触磁盘),我的目的是从内存中运行这个二进制文件。如果我的客户端是在 .NET 中创建的,那么我从内存中运行该程序集就没有问题(事实上,有很多不同的方法来获取它)但是当然 C< 是不可能的(不完全确定)。

我的问题是:在我的C 程序的地址空间中有那个程序集.exe,有没有办法从那里运行它?有什么方法可以让 CLR 运行它吗?起初我想调用 powershell 从那里运行它(使用 Reflection.Assembly),但这种情况涉及将程序集写入磁盘。

无论如何,毫无疑问,最好和最有效的方法是使用 .NET 客户端。

最佳答案

如果是exe。从 .net 构建然后它是可能的,检查 http://www.codeproject.com/Articles/13897/Load-an-EXE-File-and-Run-It-from-Memory

如果它是非托管二进制文件,那么我不知道执行此操作的方法。如果您无法将其保存到 HDD,即使在临时文件夹中,您也可以尝试使用某种内存驱动器。使用以下代码很容易执行:

        //this is using imports from System.Diagnostics and System.IO

byte[] exeBytes = GetBytesFromStream(stream); // Get the .exe file from a webstream or something
string tmpFilename = Path.GetFileNameWithoutExtension(Path.GetTempFileName()) + ".exe";
string tmpFilePath = Path.Combine(Path.GetTempPath, tmpFilename);

File.WriteAllBytes(tmpFilePath, exeBytes);

Process.Start(tmpFilePath);

关于.net - 从 C 中的缓冲区运行程序集 .exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29980441/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com