Ich möchte eine Datei simulieren, ohne sie auf der Festplatte zu schreiben. Ich habe eine Datei am Ende meiner ausführbaren Datei und ich würde gerne ihren Pfad zu einer DLL geben. Natürlich, da es keinen wirklichen Pfad hat, muss ich es fälschen.Wie erstelle ich eine virtuelle Datei?
Ich habe zuerst versucht, Named Pipes unter Windows zu verwenden. Das würde einen Pfad wie \\. \ Pipe \ mymemoryfile ermöglichen, aber ich kann es nicht funktionieren lassen, und ich bin mir nicht sicher, ob die DLL einen Pfad wie diesen unterstützen würde.
Zweitens habe ich CreateFileMapping und GetMappedFileName gefunden. Können sie verwendet werden, um eine Datei in einem Fragment eines anderen zu simulieren? Ich bin mir nicht sicher, ob dies die API ist.
Was ich versuche zu tun scheint Boxedapp ähnlich. Irgendwelche Ideen darüber, wie sie es machen? Ich nehme an, es ist etwas wie API Abfangen (Like Detour), aber das wäre eine Menge Arbeit. Gibt es einen anderen Weg, es zu tun?
Warum? Ich bin an dieser spezifischen Lösung interessiert, weil ich die Daten verstecken möchte und nur eine Datei verteile, aber auch aus verrückten Gründen, dass es so funktioniert;) Ich stimme zu, dass das Kopieren von Daten in eine temporäre Datei erfolgen würde arbeiten und eine viel einfachere Lösung sein.
Und wie genau verteilst du die Datei? Ich würde sagen, Zippen oder Kopieren der Exe würde den NTFS-Stream verschwinden lassen? –
@Gregory: Ja. Der Anwendungsfall ist in der Frage nicht wirklich klar, aber ich stimme zu, dass die Verwendung von Streams sehr wohl keine Option für das OP sein kann - hoffentlich wird dies auch deutlich in meiner Antwort angegeben. Der Hauptpunkt, den ich versuche, in der Antwort zu hämmern, ist, dass die Verwendung einer tatsächlichen Datei die beste Option ist. – villintehaspam
Dies ist eine sehr interessante Idee. Schade, es funktioniert nur auf NTFS. Da es keine perfekte Antwort gibt, ist diese die Beste. –