我需要一个安全的临时文件夹,我可以在其中为我的应用程序存储临时文件,但到目前为止,我的研究使我得出结论,我发现的所有方法都有缺陷。

第一个想法是使用 GetTempPath 函数,但这会导致两个问题:

  • 该文件夹可能不存在,因此我必须将文件夹一一截断到根目录,如果它们不存在,则重新创建它们回到完整路径(容易出错,乏味)
  • 从“Larry Osterman 的 WebLog”click 看来,GetTempPath 可能会回退到 USERPROFILE 或 Windows 目录并在那里提取大量文件,这真是太糟糕了(TM)!

  • 在同一篇文章中,建议使用 GetEnvironmentVariable,但这对我来说似乎是一个危险的函数(例如缺少 TMP 和 TEMP 环境变量)。

    我可以使用更清洁的功能吗?似乎 SHGetKnownFolderPath 不知道临时文件夹是什么。

    最佳答案

    您的程序可能不是唯一依赖 GetTempPath 的程序,因此期望它返回正确的可写路径是合理的。特别是因为 Windows 会自动为您初始化 TMP 和 TEMP 环境变量;有人将不得不费一番周折来覆盖它们,他们有责任确保更改不会弄乱他们的系统。

    我会继续假设 GetTempPath 工作正常,并担心当您尝试创建临时文件时会出现故障 - 那时可能会发生其他错误,您无论如何都需要检查。

    关于windows - 在 Windows 中获取安全的临时文件夹,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5538757/

    10-11 22:41
    查看更多