如何在运行时更改 .exe 的名称

Posted

技术标签:

【中文标题】如何在运行时更改 .exe 的名称【英文标题】:How to change the name of .exe on runtime 【发布时间】:2015-08-01 19:49:12 【问题描述】:

Persay,如果我想在我的程序运行时更改 .exe(就像它的原始名称是:someexe.exe 并且在您关闭后它会更改为随机或类似的东西)

我以前见过这种情况,我对实现它非常感兴趣,只是为了好玩!

谢谢:)

【问题讨论】:

【参考方案1】:

我不是 100% 确定,但是常规的 rename 函数应该可以工作。但是,我不确定是否可以重命名当前由操作系统保持打开的文件(而且我现在没有可以测试的 Windows 系统)。

如果您不能在“您自己的可执行文件”上执行此操作,那么您必须通过运行另一个程序 [或批处理文件] 重命名文件,然后恢复您自己的程序 [例如让重命名程序再次启动您的程序,它会以某种方式识别它现在是新名称并且可以继续。

【讨论】:

【参考方案2】:

可能的代码

#include <iostream>
#include <windows.h>
int main(int argc, char** argv) 
   
  system("title a.exe");
  std::cout<<"a.exe is the current name of your .exe file\n";
  //do your stuff

  std::cout<<"a.exe is changing to b.exe\n";
  system("RENAME C:\\path\\a.exe b.exe");
  system("title b.exe");
  //do your stuff

  std::cout<<"now b.exe is changing to a.exe\n";
  system("title a.exe");
  system("RENAME C:\\path\\b.exe a.exe");
  //do you stuff
  return 0;

但是使用systemcommand 被认为是bad 的做法,因此你应该使用rename 命令,,代码:

#include <stdio.h>
int main(int argc , char** argv)

  rename("a.exe","bii.exe");
  //do your stuff
  rename("bii.exe","a.exe");
  //do your stuff
  return 0;

【讨论】:

【参考方案3】:

您必须制作可执行文件的副本。然后您可以重命名该文件,当您关闭当前程序文件时,您需要将控制权转移到另一个程序,最好是删除原始可执行文件的批处理文件。 在 windows system() 中应该能够做这些事情。 您还需要使用代码编写自己的批处理文件来删除调用它的程序。

【讨论】:

错得太离谱了,令人难以置信。您无需制作副本。您也不需要转移控制权;如果您选择了适当的解决方案,系统会为您执行此操作。 system() 可能是 Windows 上最糟糕的主意。一个可靠的解决方案是实现一个启动器,它在目标应用程序上调用WaitForSingleObject,并在目标应用程序终止后执行MoveFile 操作。

以上是关于如何在运行时更改 .exe 的名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在任务管理器中使用不同的进程名称(对于当前进程)名称?

如何在运行时给出数据库名称并将所有更改迁移到它

在 HIVE 中运行查询时如何更改 Tez 作业名称

如何在 OSX 上的应用程序运行时获取更改名称的文件?

win10如何完全更改一个exe运行文件的图标样式?

如何以编程方式更改 C# 中的程序集名称