为什么GetTempPath总是返回短路径名?有没有办法返回长路径名,而不是随后用GetLongPathName转换返回的字符串?
答案 0 :(得分:4)
GetTempPath
最有可能返回TMP
或TEMP
环境变量的值,这些变量(至少在Windows XP下)通常是根据短路径名称定义的。< / p>
在初始化环境变量时,Windows似乎会从HKEY_CURRENT_USER\Environment
注册表项转换为短路径名。
答案 1 :(得分:0)
为什么不只是获取TEMP环境变量的值,而不是使用GetTempPath?那将是漫长的道路。
答案 2 :(得分:0)
我确实认为这是出于兼容性原因。 在较旧的Windows版本中,临时路径相对较短。在最新的Windows中,这条路径要长得多。许多旧应用程序可能使用固定长度(小长度)的缓冲区来检索临时路径。 如果你返回长文件名(现在相对较大) - 你会打破这个旧程序,因为它们的缓冲区太小而不适合它。这就是GetTempPath返回短路径名的原因。