GetModuleFileName以8.3格式返回路径

时间:2011-03-24 07:25:48

标签: c++ winapi

我调用此函数来获取exe的路径。 GetModuleFileName(NULL,... 问题是有时它返回短路径(8.3)而不是正常的长路径。

MSDN指定

The string returned will use the same format that was specified when the module was loaded. Therefore, the path can be a long or short file name, and can use the prefix "\\?\".

如何避免此行为并强制Api返回完整路径?

2 个答案:

答案 0 :(得分:3)

你无法避免它 - 如果dll加载了一个简短的名字,那就是你得到的。

如果需要,请使用GetLongPathName进行转换。

答案 1 :(得分:0)

你做不到。使用GetFullPathName获取完整路径。

另请参阅您链接到的页面中的备注部分:

  

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