.NET DiscUtils — open source-библиотека .NET Framework для доступа и работы с образами виртуальных дисков. Библиотека полностью написанная на C#, и доступна на сайте Microsoft CodePlex.

Поддерживаемые форматы .NET DiscUtils поддерживает несколько форматов образов дисков, схем выделения разделов и файловых систем Windows.

Форматы дисковых образов VHD VMDK VDI ISO UDF SDI WIM Необработанные образы дисков (IMA, IMG, VFD, FLP)

Схем выделения разделов Таблица разделов BIOS Таблица разделов GUID Диспетчер логических дисков

Файловые системы FAT FAT32 NTFS В файловых системах FAT и FAT32 отсутствует поддержка длинных имён файлов.

Примеры

Создание ISO образа CDBuilder builder = new CDBuilder(); builder.UseJoliet = true; builder.VolumeIdentifier = "A_SAMPLE_DISK"; builder.AddFile(@"Folder\Hello.txt", Encoding.ASCII.GetBytes("Hello World!")); builder.Build(@"C:\temp\sample.iso");

Распаковка файлов ISO образа using (FileStream isoStream = File.Open(@"C:\temp\sample.iso")) { CDReader cd = new CDReader(isoStream, true); Stream fileStream = cd.OpenFile(@"Folder\Hello.txt", FileMode.Open); // Используйте fileStream... }

Создание виртуального диска long diskSize = 30 * 1024 * 1024; // 30 MB using (Stream vhdStream = File.Create(@"C:\TEMP\mydisk.vhd")) { Disk disk = Disk.InitializeDynamic(vhdStream, diskSize); BiosPartitionTable.Initialize(disk, WellKnownPartitionType.WindowsFat); using (FatFileSystem fs = FatFileSystem.FormatPartition(disk, 0, null))

fs.CreateDirectory(@"TestDir\CHILD"); // Остальные действия с файловой системой...

Данный пример создает виртуальный VHD-диск с динамическим расширением. Нижеследующий пример создаст диск с фиксированным размером. long diskSize = 30 * 1024 * 1024; // 30 MB using (Stream vhdStream = File.Create(@"C:\TEMP\mydisk.vhd")) { Disk disk = Disk.InitializeFixed(vhdStream, diskSize); BiosPartitionTable.Initialize(disk, WellKnownPartitionType.WindowsFat); using (FatFileSystem fs = FatFileSystem.FormatPartition(disk, 0, null))

fs.CreateDirectory(@"TestDir\CHILD"); // Остальные действия с файловой системой...

Создание флоппи-диска using (FileStream fs = File.Create(@"myfloppy.vfd")) { using (FatFileSystem floppy = FatFileSystem.FormatFloppy(fs, FloppyDiskType.HighDensity, "MY FLOPPY "))

using (Stream s = floppy.OpenFile("foo.txt", FileMode.Create))

// Используйте поток stream...

Ссылки Официальный сайт .NET DiscUtils Статья CodeProject о .NET DiscUtils

Категория:Свободные библиотеки программ