Windows上的临时文件和文件夹

通过多次加载DLL来模拟multithreading(专门为此devise的)。 由于LoadLibrary()并不真的允许它,DLL通过GetTempPath()GetTempFileName()自身复制到一个临时文件中。

这是一个小文件,并在线程销毁后释放库并删除临时文件。 现在的问题是,线程的数量是可configuration的(疯子可以select50,100多,这基本上暴露了运行不稳定的风险,崩溃,而不是通过通常的“删除临时文件”例程。

如果我只是把这些临时文件留在那里,可以吗? 操作系统通常自行清理? 或者我应该写一个autocleanup例程? 如果是的话,我怎样才能保存另一个临时文件来保存这些文件的列表,而不是打UAC的限制或其他?

有任何想法吗?

Solutions Collecting From Web of "Windows上的临时文件和文件夹"

你的LoadLibrary /多线程讨论让我感到困惑,但没关系。

Windows上的临时文件通常不会被创建它们的进程删除。 如果用户运行“磁盘清理”工具或类似的工具,他可能会得到这些文件自动删除他。 我不认为这经常发生。

最好的方法。 让您的应用程序在临时文件夹(以及每个流程实例的子文件夹)中创建一个子目录。 当应用程序退出时,它通过DeleteFile清理它自己的一组临时文件。 在应用程序重新启动它可以有一些逻辑来清理文件夹和文件,由于以前的进程崩溃仍然徘徊。

你也可以看看在CreateFile上使用FILE_ATTRIBUTE_TEMPORARY标志。

你也可以考虑为你的进程设置一个全局异常处理程序。 处理程序会在崩溃退出之前删除它自己的临时目录。

您可以使用FILE_FLAG_DELETE_ON_CLOSE参数CreateFile?