我们的应用程序从外部设备收集数据。此数据主要驻留在内存中,但在用户明确保存数据之前会以临时文件的形式假脱机到磁盘。这是为了在应用程序由于某种原因崩溃时提供一些恢复机会。一般来说,它工作得很好。
最近我们发现,由于 Windows 在自动更新方面变得更加强大,这些文件会在重新启动期间自动删除。因此,如果 Windows 终止我们的应用程序以自动应用更新,则允许恢复的临时文件在重启后就会消失。
我通过故意终止应用程序并重新启动来测试问题;事实上,临时文件在重启后就消失了。
文件是使用 Win32 API 调用 GetTempFileName
以及 GetTempPath
创建的。我读过的关于这个主题的所有内容都说这些文件不会自动删除,但它们显然正在被删除。
我能做些什么来阻止这种情况?或者我应该只更改安全数据的存储位置吗?
最佳答案
您看到的是 Windows 10 中新增的“存储感知”功能。
How to Clear Temporary Files Automatically in Windows 10 .
Windows 10 got the ability to clear temporary files automatically in a recent build. Starting with build 15014, a new option appeared in Settings.
启用后,可以将其设置为清除临时文件、回收站等项目。您可以单独关闭它们。
或者,另一种选择是更改您的应用以将其临时文件保存在您控制的非系统临时文件夹中,而不是使用 GetTempPath()
。也可能使用 GetTempFileName()
以外的东西来创建您的临时文件名(例如使用日期/时间或 guid),因此 Windows 不可能跟踪您创建的临时文件。那么你的文件可能不会再被存储感知自动删除。
关于windows - 如何防止使用 GetTempFileName 创建的文件在重启时被自动删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51547248/