首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DiscUtils库打开VDI图像

使用DiscUtils库打开VDI图像
EN

Stack Overflow用户
提问于 2022-11-28 17:51:56
回答 1查看 67关注 0票数 0

我想用.vdi库打开or.vdh文件并查看它们的内容。我试了几次,但都失败了。你能帮我做这个吗?

代码语言:javascript
复制
            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);
                }
            }
代码语言:javascript
复制
            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获得错误的字符串。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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进行了测试。

代码语言:javascript
复制
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 (.)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74604617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档