返回不正确的用户文件夹怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (45)

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

GetTempPathA()

我有这样的想法:

char buff[512];
GetTempPath(500,buff);
strcat(buff,"specific_folder_in_temp\\file.txt");
FILE f*;
f = fopen(buff,"w");

但是,与其返回预期的

C:\Users\user.name\AppData\Local\Temp\...

我要

C:\Users\USER~1.NAM\AppData\Local\Temp...

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

提问于
用户回答回答于

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

为什么系统将TEMP转换为短文件名? 使用“系统”控制面板设置环境变量时,TEMP和TMP变量将以静默方式转换为其等效的短文件名(如果可能)。这是为什么? 当然,为了兼容性。 批处理文件通常假定%TEMP%和%TMP%环境变量引用的路径不包含任何嵌入空格。(其他程序也可能会做出这样的假设,但批处理文件是遇到此问题的最常见的地方。) 我说“如果可能”,因为你可以禁用短名称生成,在这种情况下,没有短名称等效,并且路径保持其原始的长形式。

你应该使用类似于PathCchAppend连接路径元素的函数,因为它会为你处理反斜杠。

所属标签

可能回答问题的人

  • 不吃貓的鱼oo

    5 粉丝466 提问6 回答
  • Richel

    8 粉丝0 提问4 回答
  • 人生的旅途

    10 粉丝484 提问3 回答
  • 云服务小能手

    0 粉丝0 提问2 回答

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励