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

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

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

谢谢:)

【问题讨论】:

    标签: c++ windows visual-studio winapi c++11


    【解决方案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 操作。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-11
        • 1970-01-01
        • 1970-01-01
        • 2018-08-16
        • 1970-01-01
        • 2018-07-09
        相关资源
        最近更新 更多