Mi piacerebbe simulare un file senza scriverlo su disco. Ho un file alla fine del mio eseguibile e vorrei dare il suo percorso a una DLL. Certo, dal momento che non ha una vera strada, devo fingere.Come creare un file virtuale?
Prima ho provato a utilizzare pipe denominate in Windows per farlo. Ciò consentirebbe un percorso come \\. \ Pipe \ mymemoryfile ma non riesco a farlo funzionare, e non sono sicuro che la dll possa supportare un percorso come questo.
In secondo luogo, ho trovato CreateFileMapping e GetMappedFileName. Possono essere usati per simulare un file in un frammento di un altro? Non sono sicuro che questo sia ciò che fa questa API.
Quello che sto cercando di fare sembra simile a boxedapp. Qualche idea su come lo fanno? Suppongo che sia qualcosa come l'intercettazione delle API (Like Detour), ma sarebbe molto lavoro. C'è un altro modo per farlo ?
Perché? Sono interessato a questa soluzione specifica perché mi piacerebbe nascondere i dati e per il beneficio di distribuire solo un file ma anche per motivi geniali di farlo funzionare in questo modo;) Sono d'accordo che copiare i dati in un file temporaneo sarebbe lavorare ed essere una soluzione molto più semplice.
E come si distribuisce esattamente il file? Direi che zippare o copiare l'exe farà svanire il flusso NTFS? –
@ Gregory: Sì. Il caso d'uso non è chiaro nella domanda, ma sono d'accordo sul fatto che l'utilizzo degli stream potrebbe non essere un'opzione per l'OP - si spera che anche questo sia chiaramente indicato nella mia risposta. Il punto principale su cui sto cercando di battere a casa nella risposta è che l'utilizzo di un file reale è l'opzione migliore. – villintehaspam
Questa è un'idea molto interessante. Peccato che funzioni solo su ntfs. Poiché non esiste una risposta perfetta, questa è la migliore. –