Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;和Windows-如何覆盖正在运行的程序的exe文件?_C++_Windows_Locking - Fatal编程技术网

C++ C++;和Windows-如何覆盖正在运行的程序的exe文件?

C++ C++;和Windows-如何覆盖正在运行的程序的exe文件?,c++,windows,locking,C++,Windows,Locking,我试图制作一个可自我更新的程序,但我不明白如何重写(当前进程的)正在运行的程序的exe文件。运行Exe文件时,该文件被进程锁定,无法写入 如何更新程序-我需要更新文件,关闭当前进程并重新运行更新的文件 也许我的问题很傻,但我没有这个问题,直到我使用Linux。。。 干杯❤ 我通过MS VS中的资源将所需文件打包到另一个包装器中,从而解决了这个问题 以下是将资源提取到文件中的代码: #include "stdafx.h" #include "resource.h" #include "window

我试图制作一个可自我更新的程序,但我不明白如何重写(当前进程的)正在运行的程序的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文件。解压后的文件将在删除打开关闭时被删除

这只是一个计划,但我看到了可能的解决方案:)


谢谢大家

启动另一个进程(不同的文件),覆盖exe,重新启动?是的,我考虑过了。。。但是,我认为,这不是一个好的解决方案——它添加了另一个文件…启动一个。如果您担心分发另一个文件,您可以将其包装为二进制资源,并根据需要提取它。Hi。我无法理解“作为二进制资源,按需提取”这句话。你能提供一些关于这个的教程吗?非常感谢。你可以进行一些研究和网络搜索。这是一个太宽泛的问题,所以,虽然,因为它本质上是“我如何制作一个安装程序”,而不是一个具体的问题,关于一个具体的编程代码。如果你否决我的答案,请留下评论,为什么你否决投票。非常感谢。❤