То, что я пытаюсь достичь, - запустить программу, которая считает, что папка существует в пределах своей собственной папки, в то время как на самом деле папка находится где-то еще в системе.Выполнение процесса внутри виртуальной файловой системы?
Так что моя программа будет запускать процесс и сказать процессу: Папка А, который находится в C: \ A находится в своем собственном каталоге, в C: \ Program Files (x86) \ SomeProgram \ A
Так «виртуальный» каталог будет доступен только для этого процесса.
Я использую Qt для программирования своей программы, поэтому, если есть какие-либо функции Qt, которые я мог бы использовать, это было бы здорово (относительно переносимости). Тем не менее, план C++ или любые связанные с окнами API API будут в порядке.
Я думал о соединениях NTFS или символических ссылках, но я бы не знал, как создать любой из них на C++, не говоря уже о привязке их к определенному процессу.
Заранее благодарен!
EDIT:
В связи с вышеизложенным, я нашел этот вопрос: https://superuser.com/questions/234422/does-windows7-support-symbolic-links-folder-shortcuts. Тем не менее, он показывает только, как выполнять требуемые действия из командной строки, и это не будет связано с процессом.
EDIT 2:
Некоторые дополнительная информация: Я пытаюсь создать виртуальный каталог, который состоит из нескольких других каталогов, но затем сливались (я использую систему приоритетов, чтобы решить, какие файлы «выигрывают» из других файлов). Затем эти объединенные каталоги представят целевой процесс как один каталог, содержащий объединенные файлы.
Вы говорите о символических ссылках? –
Я так думаю, однако мне нужно, чтобы ссылки были видимыми только для целевого процесса и создавали их с помощью C++. – Qub1
Один из способов - перехватить базовый API файловой системы (CreateFile, FindFirstFile и т. Д.) И выполнить перенаправление там. Если вы пройдете этот маршрут, я бы рекомендовал проверить библиотеку Microsoft Detours. – MrEricSir