免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持APP、电脑端、小程序、IOS免签等等

如何将二个exe封装在一起

封装两个exe文件的方法有很多种,这里我将介绍一种常见的方法:将两个exe文件封装为一个新的exe文件,当新的exe文件运行时,两个原始的exe文件也会被执行。我们可以使用资源文件(.rc)和WinAPI实现这个功能。以下是详细的步骤:

步骤 1:准备工作

我们首先需要两个exe文件,假设它们分别叫做exe1.exe和exe2.exe。你可以自己编写这两个文件,或者将现有的exe文件重命名为这两个名称。

步骤 2:创建资源文件

新建一个文本文件并命名为resources.rc。在这个文件中,我们需要定义两个资源条目,分别表示两个exe文件。资源文件的内容如下:

```

EXE1 RCDATA "exe1.exe"

EXE2 RCDATA "exe2.exe"

```

这里,我们将exe1.exe和exe2.exe定义为两个名为EXE1和EXE2的RCDATA资源。

步骤 3:编译资源文件

为了将资源文件编译为一个.obj文件,我们需要使用Windows的资源编译器rc.exe。运行以下命令:

```

rc /r /fo resources.obj resources.rc

```

这将生成一个名为resources.obj的文件,其中包含了我们的资源。

步骤 4:编写封装程序

接下来,我们需要编写一个C++程序,作为主程序来运行封装的exe。在这个程序里,我们需要使用WinAPI来加载资源并执行。以下是一个示例程序:

```cpp

#include

#include

void RunResourceExecutable(const char* resourceName, const char* tempExeName) {

HRSRC hResource = FindResourceA(NULL, resourceName, RT_RCDATA);

if (hResource == NULL) {

std::cerr << "Failed to find resource: " << resourceName << std::endl;

return;

}

DWORD exeSize = SizeofResource(NULL, hResource);

HGLOBAL exeHGlobal = LoadResource(NULL, hResource);

LPVOID exeBuffer = LockResource(exeHGlobal);

FILE* outputFile;

fopen_s(&outputFile, tempExeName, "wb");

fwrite(exeBuffer, sizeof(BYTE), exeSize, outputFile);

fclose(outputFile);

SHELLEXECUTEINFOA shellExecuteInfo;

ZeroMemory(&shellExecuteInfo, sizeof(SHELLEXECUTEINFOA));

shellExecuteInfo.cbSize = sizeof(SHELLEXECUTEINFOA);

shellExecuteInfo.lpFile = tempExeName;

shellExecuteInfo.nShow = SW_SHOW;

shellExecuteInfo.fMask = SEE_MASK_NOCLOSEPROCESS;

if (!ShellExecuteExA(&shellExecuteInfo)) {

std::cerr << "Failed to execute " << tempExeName << std::endl;

return;

}

WaitForSingleObject(shellExecuteInfo.hProcess, INFINITE);

CloseHandle(shellExecuteInfo.hProcess);

}

int main() {

RunResourceExecutable("EXE1", "temp_exe1.exe");

RunResourceExecutable("EXE2", "temp_exe2.exe");

return 0;

}

```

在这个程序中,我们定义了一个名为RunResourceExecutable的函数,它用于查找资源、将资源写入一个临时文件并执行。在main函数中,我们分别调用这个函数来运行两个封装的exe文件。

步骤 5:编译封装程序

使用Visual Studio Developer Command Prompt或其他C++编译器,编译包装器程序。以下是使用cl.exe(Visual Studio附带的C++编译器)的命令:

```

cl main.cpp resources.obj

```

这将生成一个名为main.exe的程序。

步骤 6:运行封装程序

双击运行生成的main.exe,你会发现exe1.exe和exe2.exe都会被顺序执行。

注意:封装的exe文件可能会被一些杀毒或防护软件误报为病毒或恶意软件,因为这种行为类似于木马病毒。在实际使用中,请确保你有合法的理由对文件进行封装,并在容易引起怀疑的地方加以解释。


相关知识:
打包依赖dll生成exe方法
在Windows操作系统下,当我们开发一个程序并希望将其发布出去时,我们通常需要将程序所依赖的动态链接库(DLL)文件一起打包。这样的目的是为了确保其他人在其电脑上运行该程序时不会因缺少DLL文件而导致程序无法运行。此文章将详细介绍如何打包依赖的DLL生成
2023-06-14
打包exe启动很慢
标题:为什么打包成EXE文件后启动速度很慢?及优化方法作为一位在互联网领域工作的博主,我了解到很多开发者在将自己的程序打包成EXE文件(可执行文件)后,可能会遇到启动速度慢的问题。在这篇文章中,我将详细解释为什么会出现这个问题,并给出一些建议和方法来优化启
2023-06-14
怎么把python做为exe
将 Python 程序转换为可执行文件 (.exe) 的主要原理是将 Python 脚本 (.py) 打包成独立的可执行程序,这样即使在没有 Python 解释器的计算机上也能运行。通常,这些可执行文件包含 Python 解释器、脚本及其依赖的库文件。为了
2023-06-14
如何根据dll制作exe
制作一个EXE可执行文件是软件开发的一个重要步骤。通过将代码编译为DLL(动态链接库)文件以及EXE文件,可以使得程序独立运行。在这个过程中,DLL文件提供函数库,而EXE文件是调用DLL中的函数的主程序。本教程将详细介绍如何根据DLL制作EXE文件的过程
2023-06-14
多个exe文件做链接怎么弄
在这篇教程中,我将向您介绍如何将多个exe文件链接在一起以实现快捷方式或按顺序打开它们。这些方法并不难,只需跟随以下几个步骤:方法1:使用批处理文件(最常见的做法)1. 首先,创建一个新的文本文档。右键单击桌面,选择“新建” > "文本文档"。2. 打开新
2023-06-14
mfc生成的exe如何改名字
MFC (Microsoft Foundation Classes) 是微软为 C++ 提供的应用程序框架,使用该框架可以方便地助力开发人员更快捷地创建 Windows 桌面应用程序。在创建一个基于 MFC 的应用程序时,会为您生成一个默认的可执行文件(.
2023-06-14