Я хотел бы симулировать файл, не записывая его на диск. У меня есть файл в конце моего исполняемого файла, и я хотел бы указать его путь к dll. Конечно, поскольку у него нет реального пути, я должен подделать его.Как создать виртуальный файл?
Сначала я попытался использовать именованные каналы под Windows, чтобы сделать это. Это позволит использовать такой путь, как \\. \ Pipe \ mymemoryfile, но я не могу заставить его работать, и я не уверен, что dll будет поддерживать такой путь.
Во-вторых, я нашел CreateFileMapping и GetMappedFileName. Могут ли они использоваться для имитации файла в фрагменте другого? Я не уверен, что это то, что делает этот API.
То, что я пытаюсь сделать, похоже на boxedapp. Любые идеи о том, как они это делают? Я предполагаю, что это что-то вроде перехвата API (вроде Detour), но это будет очень много. Есть ли другой способ сделать это?
Почему? Я заинтересован в этом конкретном решении, потому что я хотел бы скрыть данные и в интересах распространения только одного файла, но также и для вызывающих причин для его работы таким образом;) Согласен, что копирование данных во временный файл работать и быть намного проще.
И как именно вы распространяете файл? Я бы сказал, что zipping или копирование exe приведет к исчезновению потока NTFS? –
@ Григорий: Да. Вариант использования на самом деле не совсем ясен в вопросе, но я согласен с тем, что использование потоков может быть очень хорошим вариантом для OP - мы надеемся, это также четко указано в моем ответе. Главное, что я пытаюсь забить домой в ответ, заключается в том, что использование фактического файла - лучший вариант. – villintehaspam
Это очень интересная идея. Жаль, что он работает только на ntfs. Поскольку нет идеального ответа, этот лучший. –