我想用.vdi库打开or.vdh文件并查看它们的内容。我试了几次,但都失败了。你能帮我做这个吗?
using (FileStream fs = File.Open(@"D:\kali\KALI_LINUX_2022_1\KALI_LINUX_2022_1.vdi", FileMode.Open))
{
CDReader cd = new CDReader(fs, true, true);
foreach (var dir in cd.Root.GetDirectories())
{
Console.WriteLine(dir.Name);
}
} using (FileStream VDIStream = File.OpenRead(@"D:\123.vdi"))
{
using DiscUtils.Vdi.DiskImageFile baseFile = new DiscUtils.Vdi.DiskImageFile(VDIStream);
var disk = new DiscUtils.Vdi.Disk(new List<DiscUtils.Vdi.DiskImageFile> { baseFile }, Ownership.Dispose);
var manager = new VolumeManager(disk);
var logicalVolumes = manager.GetLogicalVolumes();
foreach (var volume in logicalVolumes)
{
var fsInfos = FileSystemManager.DetectFileSystems(volume);
foreach (var fsInfo in fsInfos)
{
using var fs = fsInfo.Open(volume);
foreach (var file in fs.GetFiles(fs.Root.FullName, "*.*", SearchOption.AllDirectories))
{
Console.WriteLine(@"D:\");
}
}
}
}我就是这么安排的。
(yeni List { baseFile },Ownership.Dispose)无法将List转换为I获得错误的字符串。
发布于 2022-11-28 19:20:23
您想要打开一个Virtalbox .VDI文件,您可以在拥有fsInfos之后迭代这些内容!
确保根据https://github.com/DiscUtils/DiscUtils/wiki/DiscUtils.FileSystems激活文件系统助手
DiscUtils.FileSystems.SetupHelper.SetupFileSystems();
其余的工作应该很容易,我用这个包含FAT文件系统和许多1000个文件的FreeDOS.VDI进行了测试。
var disk = new DiscUtils.Vdi.Disk(@"D:\FreeDOS.vdi",FileAccess.Read);
DiscUtils.FileSystems.SetupHelper.SetupFileSystems();
var manager = new VolumeManager(disk);
var logicalVolumes = manager.GetLogicalVolumes();
foreach (var volume in logicalVolumes)
{
var fsInfos = FileSystemManager.DetectFileSystems(volume);
foreach (var fsInfo in fsInfos)
{
using var fs = fsInfo.Open(volume);
foreach (var file in fs.GetFiles(fs.Root.FullName, "*.*", SearchOption.AllDirectories))
{
Console.WriteLine(file);
}
}
}产出:
(.)\FDOS\源代码\DEFRAG\ENGINE\CACHE\PHSCACHE.H \FDOS\SOURCE\DEFRAG\ENGINE\CACHE\PHSCACHE.C \FDOS \FDOS\SOURCE\DEFRAG\ENGINE\CACHE\MAKEFILE \FDOS\DEFRAG\ENGINE\CACHE.H\LOGCACHE.C\FDCACHE.C\源\DEFRAG\引擎缓存\EMS.H.H \FDOS\SOURCE\DEFRAG\ENGINE\CACHE\EMS.ASM \FDOS\FDOS\DEFRAG\ENGINE\CACHE\CACHE\CACHE\FDOS\源DEFRAG\ENGINE\CACHE\BLKCACHE.C \FDOS\SOURCE\DEFRAG\ENGINE\APMLIB\SOURCE\TEST.C \FDOS\SOURCE\DEFRAG\ENGINE\APMLIB\SOURCE\APMLIBP.PAS \FDOS\SOURCE\DEFRAG\ENGINE\APMLIB\SOURCE\APMLIB.ERR \FDOS\SOURCE\DEFRAG\ENGINE\APMLIB\SOURCE\APMLIB.C (.)
https://stackoverflow.com/questions/74604617
复制相似问题