提取当前的可执行文件名称

时间:2012-05-13 14:34:26

标签: c++ windows

首先,我想说的是,我不是指完整的道路,是什么 GetModuleFileName或argv [0] yield。有没有一个更聪明的解决方案,而不是在最后一次反斜杠之前解雇所有内容?

3 个答案:

答案 0 :(得分:16)

首先,您希望通过调用GetModuleFileName传递NULL作为模块句柄来获取可执行文件的完整路径。然后调用PathFindFileName以提取文件名组件。

GetModuleFileNameargv[0]之间存在差异。后者是用于启动该过程的名称。它可能缺少完整路径,但更重要的是,它可能缺少.exe扩展名。如果您想知道实际文件名,则需要使用GetModuleFileName

答案 1 :(得分:0)

如果您使用.NET,那么here就是答案。但在内部可能会调用GetModuleFileName

答案 2 :(得分:0)

在Windows C / C ++中,可以读取全局变量extern char * _pgmptr以及从_get_pgmptr(char ** buffer)获得的不安全的字符串副本。

注意事项

  

仅当程序的入口点较窄时才调用_get_pgmptr(),例如main()或WinMain()。 _pgmptr全局变量包含与该进程关联的可执行文件的完整路径。有关更多信息,请参见_pgmptr, _wpgmptr

     

如果在两个进程中加载​​DLL,则一个进程中的文件名可能与另一进程中的文件名不同。

     

全局变量_pgmptr自动初始化为可执行文件的完整路径,并可用于检索可执行文件的完整路径名。