首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >GetTempPathA返回错误的用户文件夹

GetTempPathA返回错误的用户文件夹
EN

Stack Overflow用户
提问于 2018-07-02 13:42:00
回答 1查看 384关注 0票数 0

我需要访问windows上的用户特定的临时文件夹,这应该可以用

代码语言:javascript
复制
GetTempPathA()

我有一些类似的东西:

代码语言:javascript
复制
char buff[512];
GetTempPath(500,buff);
strcat(buff,"specific_folder_in_temp\\file.txt");
FILE f*;
f = fopen(buff,"w");

但是,不是返回预期的

代码语言:javascript
复制
C:\Users\user.name\AppData\Local\Temp\...

我得到了

代码语言:javascript
复制
C:\Users\USER~1.NAM\AppData\Local\Temp...

这会导致我的代码失败。对于我可能做错了什么,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2018-07-03 02:49:05

something~1.ext是一个缩写名称。生成短名称是为了与DOS/16位应用程序兼容。使用fsutil可以全局或按卷关闭短名称生成。应用程序不应该关心路径是长是短,因为用户可以在应用程序中使用它们中的任何一个作为输入。

使用系统控制面板设置环境变量时,TEMP和TMP变量将以静默方式转换为其短文件名等效项(如果可能)。为什么会这样呢?

当然是为了兼容性。

批处理文件通常假定%TEMP%和%TMP%环境变量引用的路径不包含任何嵌入空格。(其他程序也可能会做出这种假设,但批处理文件是您遇到此问题的最常见位置。)

我之所以说“如果可能”,是因为您可以禁用短名称生成,在这种情况下,没有与之等效的短名称,并且路径仍保持其原始的长形式。

您应该使用像PathCchAppend这样的函数来连接路径元素,因为它会为您处理反斜杠。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51129686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档