【问题标题】:How to Prevent Files Created with GetTempFileName Being Automatically Deleted upon Reboot如何防止使用 GetTempFileName 创建的文件在重新启动时被自动删除
【发布时间】:2018-07-26 20:44:41
【问题描述】:

我们的应用程序从外部设备收集数据。此数据主要驻留在内存中,但在用户显式保存数据之前,会以临时文件的形式假脱机到磁盘。这是为了在应用程序由于某种原因崩溃时提供一些恢复机会。一般来说,它工作得很好。

最近我们发现,由于 Windows 在自动更新方面变得更加强大,这些文件会在重新启动期间自动删除。因此,如果 Windows 终止我们的应用程序以自动应用更新,则允许恢复的临时文件会在重启后消失。

我已通过故意终止应用程序并重新启动来测试该问题;确实,重启后临时文件已经消失了。

文件是使用 Win32 API 调用 GetTempFileNameGetTempPath 创建的。我读到的关于这个主题的所有内容都表明这些文件不会自动删除,但它们显然正在被删除。

我能做些什么来阻止这种情况?还是我应该只更改我们的安全数据的存储位置?

【问题讨论】:

  • 您创建了一个 临时 文件,现在要求它像永久文件一样工作。如果你想要一个永久文件,不要创建一个临时文件。
  • @IInspectable 你说得很对,我想我们正在扩展“临时”文件的概念。但它是暂时的,因为它只有在出现严重错误的情况下才会出现,我仍然希望看到一些解释自动删除的文档;到目前为止,我还没有找到。
  • 不要将它们存储在 GetTempFileName 中,而是将它们存储在 LocalAppdata 中的某个位置。使用SHGetFolderPath 检索LocalAppData 的位置。
  • 如果临时文件仅在重新启动时被删除,而不仅仅是在程序关闭时被删除,这意味着可能有关于此挂起操作的数据存储在某处(例如注册表)。重新测试,但在重新启动之前,请检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations 并查看您的临时文件是否存在...

标签: windows winapi temporary-files


【解决方案1】:

您看到的是 Windows 10 中添加的新“存储感知”功能。

How to Clear Temporary Files Automatically in Windows 10.

Windows 10 在最近的版本中能够自动清除临时文件。从 build 15014 开始,设置中出现了一个新选项。

启用后,可以设置清除临时文件、回收站等项目。您可以单独关闭它们。

或者,另一种选择是更改您的应用程序以将其临时文件保存在您控制的非系统临时文件夹中,而不是使用GetTempPath()。并且可能还使用 GetTempFileName() 以外的其他东西来创建临时文件名(例如使用日期/时间或 guid),因此 Windows 不可能跟踪您创建的临时文件。那么也许您的文件将不再被 Storage Sense 自动删除。

【讨论】:

  • 好答案,来自我的 +1。恕我直言,真正的问题是旧版本的 Windows 最初并没有这样做,因此文件只是不断地构建和构建。任何过渡都会有痛苦,但我认为这是值得的。
  • 有趣的是,我可以在 Windows 7 上重现该行为;也许 MS 也将该功能移植到了 7。无论如何,谢谢你的回答!
  • @BrianA.Henning MS 没有将 Storage Sense 反向移植到 Windows 7。其他东西正在启动时删除您的文件。启动脚本、自动启动应用程序、磁盘清理器等
【解决方案2】:

IMO 的最佳解决方案是不使用包含(顾名思义)临时文件的临时文件夹,这些临时文件可以被删除而不会产生任何后果。

您应该将它们存储在 LocalAppdata 文件夹中的某个位置。

使用SHGetFolderPath 函数检索LocalAppData 文件夹的实际位置。

在 LocalAppData 中创建一个文件夹,其名称为您的公司名称和/或产品名称或两者的某种组合,并将您的所有伪临时文件存储在那里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-31
    • 2015-04-05
    • 2011-01-15
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    相关资源
    最近更新 更多