如何在运行时更改 .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;
但是使用system
command 被认为是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 的名称的主要内容,如果未能解决你的问题,请参考以下文章