如何使用CPP / C#从VHDX文件获取文件(或文件系统)#

时间:2014-02-21 09:55:15

标签: c++ virtual disk vhd

我想从vhdx文件中提取文件。有一种方法可以做到这一点。 - 从安装位置安装磁盘和读取文件。但我想为此编写CPP / C#代码。我能够通过MS提供的API(visrtdisk.dll)获取vhdx文件详细信息,其中包含文件大小,GUID等,但我没有得到任何可以提供磁盘结构(MBE / Partitions / FileSystem / etc)的API给出vhdx文件。

1 个答案:

答案 0 :(得分:-1)

请参阅此C#库http://discutils.codeplex.com/,它是非常全面的库并支持大量文件系统(包括VHD,VHDx,ISO,EXT,HFS,HFSPlus等)。

[从主页获取的样本并将其修改为vhdx而不是vhd]。

long diskSize = 30 * 1024 * 1024; //30MB
using (Stream vhdStream = File.Create(@"C:\TEMP\mydisk.vhdx"))
{
    Disk disk = Disk.InitializeDynamic(vhdStream, diskSize);
    BiosPartitionTable.Initialize(disk, WellKnownPartitionType.WindowsFat);
    using (FatFileSystem fs = FatFileSystem.FormatPartition(disk, 0, null))
    {
        fs.CreateDirectory(@"TestDir\CHILD");
        // do other things with the file system...
    }
}