提问者:小点点

如何将当前运行的可执行文件重命名为其他名称?


我是一个cpp的初学者,想问你如何在应用程序启动时检查名称是否是“test.exe”,如果它已经是,它只会打印“是的,这是正确的”,如果它不是,它将重命名为test.exe

尝试在网上搜索它,我只能找到一个只指定文件名重命名它的函数。 ES:

int value;
 
value = rename("fake.exe", "test.exe");

但是,如果人们将其重命名为不同于fake.exe的名称,则显然无法工作。

在一些答案后编辑:伙计们,正如我所说的,代码工作,但只有当文件的名称(在本例中)是fake.exe,没有人会这样重命名它。

所以我要求得到一部分代码来更改应用程序的名称,不管它是什么名字。


共2个答案

匿名用户

在许多系统中,mainargv的第一个元素是可执行文件的路径。 您可以使用它:

int main(int argc, char **argv) {
    /* Some very important checks */
    int value = rename(argv[0], "test.exe");
}

您应该检查当前工作目录是否是可执行文件的目录,否则这也将移动文件,并可能覆盖另一个文件。

argv[0]是指向空终止的多字节字符串的初始字符的指针,该字符串表示用于调用程序本身的名称(如果执行环境不支持,则为空字符串“”)。

https://en.cppreference.com/W/cpp/language/main_function

还要记住,您的程序可以通过符号链接调用。 在这种情况下,符号链接的路径被传递到main

匿名用户

int value;
char oldname[] = "fake.exe"";
char newname[] = "test.exe"";
    
value = rename(oldname, newname);