Подключение файла как диска.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by GrAmOzEkA, 27 Nov 2008.

  1. GrAmOzEkA

    GrAmOzEkA Elder - Старейшина

    Joined:
    25 Jun 2006
    Messages:
    234
    Likes Received:
    76
    Reputations:
    29
    Собсно сабж, интересует вопрос как реализовать такую тему, например создается виртуальный диск который берет информацию из зашифрованного файла, расшифровывает,а дальше просто работаешь как обычно и при закрытии вся информация опять записывается в этот файл.
    Например как сделано в программах:
    Dekart Private Disk
    Esmart CryptoDisk

    P.S. Шифрование можно опустить, меня интересует как сделать само подключение файла как диска.
     
  2. bons

    bons Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    286
    Likes Received:
    121
    Reputations:
    21
    можно запускать стандартную программу subst
    она создает виртуальный диск, которому сопоставляется некий реальный путь к директории
     
  3. GrAmOzEkA

    GrAmOzEkA Elder - Старейшина

    Joined:
    25 Jun 2006
    Messages:
    234
    Likes Received:
    76
    Reputations:
    29
    я это знаю, но мне нужно не для директории, а для файла
     
  4. avt0

    avt0 Elder - Старейшина

    Joined:
    13 Apr 2007
    Messages:
    5
    Likes Received:
    6
    Reputations:
    0
    файл в autorun.ini для этого диска и всё.
     
  5. Dian

    Dian Elder - Старейшина

    Joined:
    2 Sep 2008
    Messages:
    57
    Likes Received:
    11
    Reputations:
    4
    GrAmOzEkA, смотри исходники программ типа TrueCrypt
    (там все именно так, даже с шифрованием)
     
  6. Jim_Di

    Jim_Di Member

    Joined:
    20 Nov 2008
    Messages:
    40
    Likes Received:
    22
    Reputations:
    6
    создаёшь временную папку, копируешь туда файл и потом через subst подключаешь как виртуальный диск - это самый простой и действенный способ.

    bons правильно сказал.

    а если надо брать инфу из файла - бери и там уж как-нибудь изворачивайся и копируй туда на время. или просто создай диск и накопируй туда.

    вобщем простор для воображения есть =)
     
  7. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,301
    Reputations:
    327
    какой смысл эмулить папку как диск и что это даст?!?!??! есть исходники memfile например - там дров который выделяет физическую оперативную память и предоставляет ее как ramdisk, да и куча всего связанного с этим, но в любом случае для реализации того что хочет топикстартер нужен драйвер.
     
    2 people like this.
  8. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,301
    Reputations:
    327
    вот собсна пример дрова (немного не по сабжу, ибо диск в ram) http://support.microsoft.com/kb/257405/ru
     
  9. Jim_Di

    Jim_Di Member

    Joined:
    20 Nov 2008
    Messages:
    40
    Likes Received:
    22
    Reputations:
    6
    ну это был как вариант решения. для простого решения пойдёт.

    естественно, что для крупного полноценного приложения необходим драйвер
     
  10. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,301
    Reputations:
    327
    тут вопрос не в этом. как ты собираешься шифровать данные например? какая разница будет ли твоя программа обращаться к файлу z:\myfile.txt (после subst z: с:\work\files) или к c:\work\files\myfile.txt? да никакой. абсолютно. диск Z - это псевдодиск. И функционал у него такойже.

    другое дело если мы хотим шифрование. это да. вот на примере ramdrive можно сделать и с файлом (хотя лучше готовую реализацию поискать ибо еб*тня с пнп и ирп несколько другая + реализация шифрования и собсна самого интерфейса)

    тогда вот драйвер создает например c:\vdisk.dat где хранится в шифрованном варианте дерево и сами файлы, а сам драйвер представляет промежуточные интерфейсы - для чтения\записи через виртуальный диск. Например, создаем файл на виртуальном диске и пишем в него: CreateFile("v:\\hello.txt"), WriteFile("hello im here!")
    Произойдет следующее: система обратится к драйверу файловой системы в итоге, но перед этим естественно по symlink будет вызван наш промежуточный драйвер который будет еще одним драйвером файловой системы но уже виртуального диска. И именно он будет шифровать и расшифровывать "на лету"

    опенсорс по сабжу http://www.truecrypt.org/
     
    #10 sn0w, 1 Dec 2008
    Last edited: 1 Dec 2008
    1 person likes this.
  11. Jim_Di

    Jim_Di Member

    Joined:
    20 Nov 2008
    Messages:
    40
    Likes Received:
    22
    Reputations:
    6
    хм, ну если опенсорс тогда почему бы и нет. не думал что просто есть открытое по в этой области
     
  12. th13fnano

    th13fnano New Member

    Joined:
    8 Dec 2008
    Messages:
    6
    Likes Received:
    1
    Reputations:
    0
    true crypt - софт с раздела Must have!