Единственный способ получить файл, который находится только в памяти, - это использовать RAM-диск . Вы можете найти бесплатные RAM-диски и, возможно, некоторые реализации с открытым исходным кодом, но они требуют драйвера ядра. Точки монтирования NTFS позволят вам смонтировать этот диск как подпапку на диске C: если это необходимо.
С точки зрения программирования, единственное, что могла бы сделать программа B, это установить флаг удаления при закрытии после того, как программа A открыла файл. В зависимости от того, как A использует файл, вы можете просто удалить файл, а если нет, B должен будет вызвать SetFileInformationByHandle(FileDispositionInfo, ...)
для дескриптора файла, но это будет работать, только если программа A откроет файл с установленными флагами общего доступа, разрешающими удаление. Я никогда не проверял это, поэтому я не уверен на 100%, что это сработает, если пропадет питание. В NTFS есть журналирование, которое проверяет правильность состояния файловой системы, но я не уверен, применимо ли это к флагу удаления.