如何嵌入和运行.exe从c#或C/ c++

本文关键字:c++ 何嵌入 运行 exe | 更新日期: 2023-09-27 18:14:30

我有。exe文件(我多年前用c++创建的),我想从我的新程序。exe中运行这个。exe,这是用c#/c++(控制台应用程序)编写的。我可以嵌入旧的。exe到新的代码(c++/c#),并创建一个新的。exe,其中将包括旧的?

编辑:我可以从c++中运行:

system("path''to''exe");

或c#中的

Process.Start(path);

但是都使用path,我需要嵌入到新的。exe

如何嵌入和运行.exe从c#或C/ c++

首先将其作为资源嵌入到应用程序中。这样,就可以动态地访问它的二进制数据并将其加载到应用程序中,并且可以访问EAT (Export Address Table)来查找需要使用的函数。这种封送处理在c#中很困难,但您可以选择提取应用程序。我相信保持它的简单,这可能满足您的需要。

void ExtractAndRun(string assemblyResource)
{
    var tempPath = Path.Combine(Environment.CurrentDirectory, "uapweaelsirx.exe");
    var res = GetType().Assembly.GetManifestResourceStream(assemblyResource);
    var fileBuffer = new byte[(int)stream.Length];
    res.Read(fileBuffer, 0, fileBuffer.Length);
    File.WriteAllBytes(tempPath, fileBuffer);
    Process.Start(tempPath);
}

如果您的流程运行时间不是很长,或者您只是希望将其合并到您的用户中,那么这个解决方案可能是一个可以接受的选择。如果没有,评论,我将提供一个替代的解决方案与编辑。或者点赞,我会在新的答案中发布另一个解决方案。

相关文章: