首先,我想说我不是指完整路径,
GetModuleFileName 或 argv[0] 产生什么。有没有比在最后一个反斜杠之前忽略所有内容更聪明的解决方案?
问问题
6150 次
3 回答
17
GetModuleFileName
首先,您希望通过调用传递NULL
作为模块句柄来获取可执行文件的完整路径。然后调用PathFindFileName
拉出文件名组件。
和之间其实是有区别GetModuleFileName
的argv[0]
。后者是用于启动进程的名称。它可能缺少完整路径,但更重要的是,它可能缺少.exe
扩展名。如果您想知道实际的文件名,那么您需要使用GetModuleFileName
.
于 2012-05-13T14:46:22.663 回答
0
如果您使用 .NET,那么这里有一个答案。但在内部它可能正在调用GetModuleFileName
.
于 2012-05-13T14:39:10.203 回答
0
在 Windows C/C++ 中,有一个extern char * _pgmptr
可以读取的全局变量以及来自_get_pgmptr(char ** buffer)
.
注意事项
仅当您的程序有一个狭窄的入口点(如 main() 或 WinMain())时才调用_get_pgmptr( )。_pgmptr 全局变量包含与进程关联的可执行文件的完整路径。有关详细信息,请参阅_pgmptr、_wpgmptr。
如果 DLL 在两个进程中加载,则一个进程中的文件名可能与另一进程中的文件名不同。
全局变量 _pgmptr 自动初始化为可执行文件的全路径,可用于检索可执行文件的全路径名。
于 2019-09-17T15:03:10.860 回答