在Windows中从纯C创建一个唯一的临时目录

我想在 Windows中从一些C创建一个唯一的临时目录
代码(不是C或C#).我想这样做,以便我可以放一些温度
目录中的文件,然后在完成后轻松删除它们
(通过递归删除目录).

我基本上在寻找一个相当于linux的
mkdtemp
功能.有一个C#的答案here和答复在this
question

建议使用Boost.但是,由于我使用C,这些解决方案不起作用
为了我.

到目前为止,我所能想到的最好的就是使用
GetTempFileName
其次是CreateDirectory,
但问题是如果我问
GetTempFileName
要创建一个唯一的文件名,它也会创建文件(其中我
不要,因为我想要做一个目录).

相关地,有
GetTempPath,
它从环境返回用户的临时文件夹的位置
变量 – 但是,因为我想创建我自己的目录,我可以
安全删除以后,我还是需要在任何目录里创建一个目录
路径会返回.

看来,如果我想要创建一个唯一的目录,我必须
创建一个临时文件,获取名称,删除它,然后创建一个
同名的目录 – 这听起来很杂乱.
任何其他想法?

您可以使用GetTempPath返回与Guid连接以确保目录的唯一性.您可以使用 UuidCreate CoCreateGuid Function创建Guid.

要递归地删除目录,这里有一个基于FindFirstFile,FindNextFile,DeleteFile和RemoveDirectory的纯C:How to remove directory recursively?的例子.

还有SHFileOperation,但它更重量级,基于Windows Shell功能,并且Shell DLL并不总是需要的,特别是如果您正在编写服务器代码.

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...