C++和Windows-如何覆盖正在运行的程序的exe文件
C++ and Windows - how to overwrite exe file of the running program?
我试图制作可自我更新的程序,但我不明白如何重写(当前进程的)运行程序的exe文件。当Exe文件正在运行时,它被进程锁定,无法写入。
如何更新程序-我需要更新文件,关闭当前进程并重新运行更新的文件。。。
也许我的问题很傻,但我没有这个问题,直到我使用Linux。。。干杯❤
我通过MS VS中的参考资料将所需文件打包到另一个包装器中,从而解决了这个问题。
以下是将资源提取到文件中的代码:
#include "stdafx.h"
#include "resource.h"
#include "windows.h"
int main()
{
HRSRC hrsrc = FindResource(NULL, MAKEINTRESOURCE(IDR_BINARYTYPE1), _T("BINARYTYPE"));
//FindResource(NULL, MAKEINTRESOURCE(IDR_BINARYTYPE1), RT_BITMAP);
HGLOBAL hLoaded = LoadResource(NULL, hrsrc);
LPVOID lpLock = LockResource(hLoaded);
DWORD dwSize = SizeofResource(NULL, hrsrc);
HANDLE hFile = CreateFile(TEXT("c:/temp/zxcv.exe"), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD dwByteWritten;
WriteFile(hFile, lpLock, dwSize, &dwByteWritten, NULL);
CloseHandle(hFile);
FreeResource(hLoaded);
return 0;
}
我还没有100%意识到这一点,但我计划将我的exe打包到包装器中,这将把我的exe解压到%Temp%目录中,并开始解压exe文件。未打包的文件将使用DELETE_ON_CLOSE删除。
这只是一个计划,但我看到了可能的解决方案:)。
感谢大家!
相关文章:
- 运行程序时出现问题
- 分段错误当我试图运行程序时出错
- C++ 每次运行程序时我都会"nan"输出的问题
- 通过 g++ 运行程序时没有这样的文件或目录
- 重新运行程序和字符串流?
- 无法在 VS Code 上使用代码运行程序运行C++文件
- 使用有限的 RAM 运行 c++ 程序
- 继续运行程序而无需任何干预,直到要求退出为止
- 如何在每次运行程序时写入文件的下一行?
- 控制台在运行C ++程序后立即关闭(无需调试)
- 运行程序时找不到共享对象库,但在编译过程中链接了它
- 远程运行程序
- 在 Heroku 上运行 C++ 程序
- 如何在Powershell中运行C++程序,就像CMD一样?
- 为什么与Java和Python相比,使用Cmake运行C++程序每次都需要这么长时间?
- C++随机数生成器通常在 Visual Studio 中运行程序时在 2 次后停止生成数字
- 崇高文本 3 - 在终端中编译并运行 C++ 程序(路径包含空格)
- 我收到阻止我运行程序的警告,但不确定如何解决
- C++ Visual Studio 无法完全运行程序
- 在SIGABRT c ++信号之后继续运行程序