- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在.NET Core 中使用 NTFS 创建虚拟硬盘。
我在其 GitHub page 上找到了 DiscUtils NuGet 包和示例代码可以很好地创建 FAT 格式的 VHD。
long diskSize = 30 * 1024 * 1024; //30MB
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");
// do other things with the file system...
}
}
但对于我的用例,我需要大于 2 GB 的文件。因为无论如何我们都使用 Windows,所以 NTFS 没问题。所以我尝试了这段代码
long diskSize = 300 * 1024 * 1024; //300 MB
var vhdPath = Path.Combine(Path.GetTempPath(), Path.ChangeExtension(Path.GetRandomFileName(), "vhd"));
using (Stream vhdStream = File.Create(vhdPath))
{
var disk = DiscUtils.Vhd.Disk.InitializeFixed(vhdStream, Ownership.None, diskSize);
BiosPartitionTable.Initialize(disk, WellKnownPartitionType.WindowsNtfs);
using (var ntfs = NtfsFileSystem.Format(vhdStream, "Virtual NTFS drive", Geometry.FromCapacity(diskSize), 0, diskSize / Sizes.Sector))
{
ntfs.CreateDirectory(@"TestDir\CHILD");
// do other things with the file system...
}
}
此代码创建了一个 300 MB 的 VHD,我可以使用 7zip 打开该 VHD,但它包含一个约 300 MB 的 *.mbr 文件。如果我尝试打开它,它会在临时文件夹中打开一个新的 7zip 窗口。如果我对该 vhd 加倍时钟,则会出现 Windows 错误“驱动器镜像未初始化,包含无法识别的分区或包含未分配驱动器号的卷。使用驱动器管理管理单元确保驱动器、分区和卷处于可用状态。”(免费翻译自德语)
此后我无法再访问该文件,因为某些 Windows 进程仍然保持忙碌状态。
我在这里误解了什么?
还有其他方法可以使用 C# 和 .NET Core 创建/挂载 VHD吗?
最佳答案
我从 EricZimmerman 那里得到了有关项目的答案 GitHub page :
var diskSize = 2000 * 1024 * 1024;
var asVhd = false;
using (var fs = new FileStream(_vhfxFileName, FileMode.OpenOrCreate))
{
VirtualDisk destDisk = Disk.InitializeDynamic(fs, Ownership.None, diskSize);
if (asVhd)
{
destDisk = DiscUtils.Vhd.Disk.InitializeDynamic(fs, Ownership.None, diskSize);
}
BiosPartitionTable.Initialize(destDisk, WellKnownPartitionType.WindowsNtfs);
var volMgr = new VolumeManager(destDisk);
var label = $"ZZZZZZ ({dateStamp})";
using (var destNtfs = NtfsFileSystem.Format(volMgr.GetLogicalVolumes()[0], label, new NtfsFormatOptions()))
{
destNtfs.NtfsOptions.ShortNameCreation = ShortFileNameOption.Disabled;
var destDirectory = Path.GetDirectoryName(@"Some file");
destNtfs.CreateDirectory(destDirectory, nfo);
using (Stream source = new FileStream(@"Some file2", FileMode.Open, FileAccess.Read))
{
var destFileName = @"foo";
using (Stream dest = destNtfs.OpenFile(destFileName, FileMode.Create, FileAccess.ReadWrite))
{
source.CopyTo(dest);
dest.Flush();
}
}
// do more stuff here
}
// commit everything to the stream before closing
fs.Flush();
}
对我有用!享受吧:)
关于c# - DiscUtils 创建 NTFS vhd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54762062/
我在 NTFS 中有一个文件夹,其中包含数万个文件。我已经删除了该文件夹中的所有文件,保存 1。我运行 contig.exe 对该文件夹进行碎片整理,所以现在它只有 1 个片段。但是,该文件夹的大小仍
我有一个程序,正如现在所做的那样,它有一个数据目录,里面有大约 10-30K 的文件,它开始出现问题。我是否应该期望这会导致问题和我调整文件结构的唯一解决方案,或者这是否表明存在其他问题? 最佳答案
对于一个项目,我想获取 NTFS 分区上所有可用/已用集群的列表。为此,我必须转储 $Bitmap 文件并解析其内容。 Web 上的 API 和示例很少,但它们似乎不起作用。是否有一种简单的方法/代码
我可以使用 GetFileInformationByHandle确定与文件关联的硬链接(hard link)的数量。如何枚举构成这些链接的路径? 例如,如果 C:\TEMP_1.BIN和 C:\TEM
如果是这样,那么您如何证明产生的间接费用(日记等)是合理的?如果没有,那么页面文件怎么会碎片化呢?此外,增加集群大小是否会提高页面文件性能(集群空闲空间不是问题)? 最佳答案 您可以查看 filemo
我的问题是关于 NTFS Fs 上的文件分配方法。 我有两个主要问题- 当我在 NTFS 上创建文件时,它是否连续存储在物理硬盘上? 如果没有 - 有没有办法创建一个文件,这样当我写入它时,数据会连续
我想知道 NTFS 元数据中包含哪些信息。 但是我在任何地方都找不到那张纸。 我猜元数据有一个文件名、一个大小和一个属性等。 NTFS 元数据是否也有短路径名称? NTFS 元数据中包含哪些信息? 你
我是 Pinvoke 的新手。当我可以访问目录时,我想在找到 root 后获取 mft。我想使用 DeviceIoControl,例如下面的代码: BOOL DeviceIoControl( (
我的双操作系统 PC(XP Pro 和 Ubuntu)出了点问题,现在它只能在从 Ubuntu Live CD (8.04 LTS) 启动时工作。 我正在将我的数据备份到外部 HDD 以重新安装所有内
我需要从 Java 读取和修改 NTFS 分区上文件的“压缩”属性。我在 java.nio.file.attribute 中想象了一些东西package 可以做到——见鬼,它是一个足够复杂的包,但我找
我想知道 NTFS 对存储在其上的数据提供了什么样的可靠性保证?例如,假设我正在打开一个文件,追加到末尾,然后关闭它,并且在这个操作过程中随机断电。我能找到完全损坏的文件吗? 我问这个问题是因为我刚遇
根据 Wikipedia NTFS 允许两个大小写不同的相似名称(如 Readme.txt 与 readme.txt),并且只有 Windows 文件 API 会阻止它。 Current Window
我在 windows xp 上测试过这个。 如果我这样做 创建一个文件。 写入文件。 关闭文件。(然后,文件的 LastWriteTime 被更改) 但如果我这样做 创建一个文件。 设置文件的 Las
我刚刚开始编写一些程序来处理 WinXP 系统上具有非英文名称的文件名。我已经完成了一些关于 unicode 的推荐阅读,我想我已经了解了基本概念,但有些部分对我来说仍然不是很清楚。 具体来说,NTF
使用 NTFS 的 Windows 如何处理大量文件和目录? 在遇到性能问题或其他问题之前,是否有关于您可以放置在单个目录中的文件或目录限制的任何指导? 例如拥有一个包含 100,000 个文件夹
鉴于微软有 deprecated Transactional NTFS (TxF) : Microsoft strongly recommends developers utilize alterna
我想为文件存储一些与应用程序相关的元数据,而 NTFS 备用数据流 (AltDS) 将允许我将此元数据直接存储在文件中,而不是存储在单独的数据库中。 我只是觉得这不是一个好主意。我知道这仅适用于 NT
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我正在编写一些代码来解析 NTFS 卷中磁盘上的 MFT。这很简单,但是一个特殊的极端案例引起了我的注意,我在互联网上的任何地方都找不到明确的答案。 对于 NTFS 中的普通文件,如果文件的属性多于单
我想运行一个脚本来检查驱动器,看看是否有一个所有人设置为 NTFS 权限。目前我正在运行: Get-ChildItem D:\ -Recurse | Where-Object { (Get-A
我是一名优秀的程序员,十分优秀!