Виртуальное слияние директорий

Discussion in 'WASM.WIN32' started by ormoulu, Dec 4, 2021.

  1. ormoulu

    ormoulu Well-Known Member

    Blog Posts:
    0
    Joined:
    Jan 24, 2011
    Messages:
    1,206
    Знает ли кто-нибудь технику или ПО, позволяющие виртуально/временно объединять (merge) две или более директорий в Windows? Что-то вроде жестких ссылок (hard links), но позволяющее проецировать содержимое одной директории на другую (с сохранением видимости содержимого второй директории).

    Если ничего уже существующего нет, ваши предложения по реализации такой технологии?

    Где может быть полезно: контейнеризация софта, который любит складывать данные в папку установки, для быстрого сброса либо разделения между пользователями, для отката обновлений.
     
  2. Artem_N

    Artem_N Artem N

    Blog Posts:
    0
    Joined:
    Mar 1, 2009
    Messages:
    74
    В Проводнике есть Библиотеки. Это, похоже, какая-то слишком высокоуровневая штука самого Проводника, но может для неё есть API (нагуглить невозможно).
     
  3. rmn

    rmn Well-Known Member

    Blog Posts:
    0
    Joined:
    Nov 23, 2004
    Messages:
    2,347
    Artem_N,
    Библиотеки - это виртуальные каталоги. ТСу NTFS junctions нужны. ПО у Руссиновича есть.
     
  4. Artem_N

    Artem_N Artem N

    Blog Posts:
    0
    Joined:
    Mar 1, 2009
    Messages:
    74
    Попробовал сейчас, ничего у меня не получилось.
    Junction point может быть только новым "каталогом", а не уже существующем. Добавить к "каталогу" дополнительный путь не даёт.
     
  5. rmn

    rmn Well-Known Member

    Blog Posts:
    0
    Joined:
    Nov 23, 2004
    Messages:
    2,347
    Ну да, так и делается. Один каталог с контентом монтируется как подкаталог в другой. Если же объединять именно контенты двух каталогов, то как разруливать конфликты имен и в какой "реальный" каталог прописывать новые файлы?
     
    Artem_N likes this.
  6. ormoulu

    ormoulu Well-Known Member

    Blog Posts:
    0
    Joined:
    Jan 24, 2011
    Messages:
    1,206
    Если речь о программе с данными, оптимально чтобы один каталог был readonly (исполняемые файлы), второй доступен на запись (данные и обновления). Соответственно при обновлении или конфликте файлов видимым должен остаться файл из перезаписываемого каталога. Если же это файлохранилище (типа той же библиотеки), можно изменять имена, как это например делается при копировании.
     
  7. focussoft

    focussoft New Member

    Blog Posts:
    0
    Joined:
    Apr 3, 2018
    Messages:
    14
    Эта задача точно 100% выполнима с помощью минифильра. Делал сам много лет назад. Перехватываешь IRP_MJ_DIRECTORY_CONTROL подсовываешь нужны файлы.
    потом при любом IRP_MJ_CREATE для добавленных файлов делаешь редирект на файл оригинала. таким образом при пролистывании одно директории видны файлы и субдиректории из первой и из второй директории.
    при попытки открыть или просмотротеть свойства одного из файлов открывается файл оригинал. короче такой путь рабочий.
    --- Сообщение объединено, Dec 7, 2021 ---
    минифильтры работают начиная с xp и выше
     
    ormoulu likes this.