C++ 如何覆盖当前运行的可执行文件?

C++ 如何覆盖当前运行的可执行文件?,c++,windows,C++,Windows,可能重复: 我有一个用C++编写的应用程序。它正在运行。如何使它覆盖自己的exe文件,以便下次启动时它将是一个新的exe文件 有点像自动更新?这在实践中并没有实现。通常的做法是: 原始程序: 启动一个小的“更新程序” 终止 更新程序: 等待原始文件终止 将原件移开(例如,重命名为“.old”) 将新版本移动到位 启动新版本 终止 这是非常安全的,因为在新版本出现之前,您不会放弃旧版本 复制它 覆盖副本 在运行程序退出之前,创建一个低优先级进程,该进程可以使用副本来回复原始进程。比如“自动删除”

可能重复:

我有一个用C++编写的应用程序。它正在运行。如何使它覆盖自己的exe文件,以便下次启动时它将是一个新的exe文件


有点像自动更新?

这在实践中并没有实现。通常的做法是:

原始程序:

  • 启动一个小的“更新程序”
  • 终止
  • 更新程序:

  • 等待原始文件终止
  • 将原件移开(例如,重命名为“.old”)
  • 将新版本移动到位
  • 启动新版本
  • 终止
  • 这是非常安全的,因为在新版本出现之前,您不会放弃旧版本

  • 复制它
  • 覆盖副本
  • 在运行程序退出之前,创建一个低优先级进程,该进程可以使用副本来回复原始进程。比如“自动删除”

  • 无论如何,这是一个解决办法。我希望它会有所帮助。

    如果您可以控制运行的进程(这是您的程序,您可以让它知道),您应该能够解锁它,以便它可以被覆盖,如果这不是您的最佳选择,则您最好按照上面所述终止并重新启动它

    ,重新打开它并没有多大意义,因为已经有大量的副本覆盖了Windows和WindowsLinux@PaulR:但以副本形式结束将提供指向这些内容的指针,这(依我看)是值得的。