你几乎可以做到(意思是:不,你不能,但你可以做一些接近的事情)。
创建文件原则上FILE_ATTRIBUTE_TEMPORARY
会临时创建一个文件。但是,只要有足够的缓冲区缓存(通常情况下总是如此,除非您的文件是几十到几百兆字节),系统就不会写入磁盘。这不仅仅是偶然发生的事情,而是这个标志的实际指定行为。
此外,指定0
为共享模式FILE_FLAG_DELETE_ON_CLOSE
并将阻止任何其他进程打开您的文件,只要您保持打开状态,即使有人知道它在那里,并且当您关闭它时文件将“消失”。即使您的应用程序崩溃,操作系统也会在您身后清理(如果 DRM 是原因)。如果您处于超级偏执模式并担心文件存在时系统蓝屏,您也可以另外安排待处理的移动。如果系统崩溃,这将在引导期间删除文件。
最后,给定 NTFS,您可以在任何文件甚至目录上创建一个具有随机的、最好是唯一的名称(例如文档的 SHA1 或 UUID)的备用流。目录上的备用流是......一种讨厌的黑客,但完全合法,它们工作得很好,并且不会出现在资源管理器中。这不会真正使您的文件不可见,但几乎如此(几乎在每个实际方面,无论如何)。如果你是一个好公民,你会想要使用系统临时文件夹来做这样的事情,而不是程序文件夹或其他你不应该写的地方。
创建备用流也非常简单,只需使用普通文件或目录名称并附加一个冒号 ( :
) 和您想要的流的名称。不需要额外的 API。
除此之外,它变得有点困难。当然,您总是可以创建类似 ramdisk 之类的东西(虽然很难隐藏它),或者尝试使用内存流功能之一来欺骗应用程序,使其根据文件的指控从内存缓冲区读取...但这不是微不足道的事情。