关于Win32 API中的GetTempPath函数

时间:2009-04-28 05:36:22

标签: winapi

为什么GetTempPath总是返回短路径名?有没有办法返回长路径名,而不是随后用GetLongPathName转换返回的字符串?

3 个答案:

答案 0 :(得分:4)

GetTempPath最有可能返回TMPTEMP环境变量的值,这些变量(至少在Windows XP下)通常是根据短路径名称定义的。< / p>

在初始化环境变量时,Windows似乎会从HKEY_CURRENT_USER\Environment注册表项转换为短路径名。

答案 1 :(得分:0)

为什么不只是获取TEMP环境变量的值,而不是使用GetTempPath?那将是漫长的道路。

答案 2 :(得分:0)

我确实认为这是出于兼容性原因。 在较旧的Windows版本中,临时路径相对较短。在最新的Windows中,这条路径要长得多。许多旧应用程序可能使用固定长度(小长度)的缓冲区来检索临时路径。 如果你返回长文件名(现在相对较大) - 你会打破这个旧程序,因为它们的缓冲区太小而不适合它。这就是GetTempPath返回短路径名的原因。