如何防止重新启动时自动删除GetTempFileName创建的文件

Bri*_*ing 2 windows winapi temporary-files

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

最近,我们发现,由于Windows对自动更新变得更加强大,这些文件会在重新启动时自动删除.因此,如果Windows杀死我们的应用程序以自动应用更新,那么在重新启动后,允许恢复的临时文件就会消失.

我通过故意杀死应用程序并重新启动来测试该问题; 实际上,重启后临时文件已经消失了.

该文件使用Win32 API调用创建GetTempFileName,伴随着GetTempPath.我在这个主题上读到的所有内容都说这些文件不会自动删除,但它们显然正在被删除.

我能做些什么来阻止这种情况?或者我应该改变我们的安全数据存储位置?

Rem*_*eau 5

您所看到的是Windows 10中添加的新"存储感"功能.

如何在Windows 10中自动清除临时文件.

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

图片

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

图片

图片

或者,另一个选项是更改您的应用程序,以将其临时文件保存在您控制的非系统临时文件夹中,而不是使用GetTempPath().也许还可以使用除了GetTempFileName()创建临时文件名之外的其他内容(例如使用日期/时间或guid),因此Windows无法跟踪您创建的临时文件.那么也许Storage Sense不会再自动删除你的文件了.

  • @ BrianA.Henning MS没有将Storage Sense后端移植到Windows 7.还有其他东西在启动时删除你的文件.启动脚本,自动启动应用程序,磁盘清理器等. (3认同)