我正在分发一些 VHD 文件,希望接收方能够挂载并查看其内容,但是我希望在接收方挂载并查看其内容之后,VHD 文件的校验和保持不变。
但是,默认情况下(至少在 Windows 中,这是我主要需要解决方案的操作系统),通过资源管理器安装 VHD 会将其安装为可写,并且 VHD 的校验和将被安装过程更改。
在资源管理器属性中将 VHD 文件本身标记为只读只是一个文件元数据标志,不会通过在线下载保留,因此这没有帮助。
用于diskpart
在安装 VHD 磁盘时设置其属性,disk attributes set readonly
在卸载和重新安装 VHD 之间不会保留。
有没有其他方法可以使 VHD 永久只读,也许有某种方法可以在 VHD 文件本身内创建一个只读标记,所有标准 VHD 安装工具都会检测并遵守?
答案1
您不应该为此使用 VHD。对于只读映像,只需使用 ISO. Windows 已经拥有内置长期挂载 ISO 文件的功能
有很多方法可以将文件夹转换为 ISO因此只需将 VHD 的内容刻录到 ISO 文件并分发即可
据称也可以使用 IMG 文件对于光盘映像,虽然我不太清楚支持哪种 IMG 格式也没有关于此的官方文件
现代 Windows 还支持其他图像格式,如 WIM 和 FFU。我认为它们也可以使用。有关详细信息,您可以查看对 Windows 分区进行映像处理的最有效、最原始的方法是什么?
什么时候创建 WIM 文件您可以使用/CheckIntegrity
它,以便 Windows 在安装时检测文件的问题。因此,您可以使用命令轻松将 VHD 转换为 WIM,例如
Dism /Capture-Image /ImageFile:C:\data\my.wim /CaptureDir:C:\vhd\mounted\path /Name:MyData
您还可以使用/Split-Image
选项制作只读图像,尽管它不是一个单独的文件
对于 WIM,此命令将现有的 .wim 文件拆分为多个只读拆分 .swm 文件。
在较旧的 Windows 中你也可以使用imagex /split
达到同样的效果
对于 FFU 来说,同样也有/Split-FFU
选项对于多部分只读图像
无论如何,如果你真的想使用 VHD 文件,你可以将 VHD 映像中的每个分区标记为只读。这不能确保 VHD 的签名不会改变,但每个卷的内容应该基本保持不变
- 通过运行关闭“自动挂载”
mountvol.exe /N
- 将磁盘连接到 Windows(不安装磁盘)
- 跑步
diskpart
- 进入
list volume
- 输入
select volume X
(其中X
是上一个命令中的正确卷号)- 进入
att vol set readonly
- 输入
detail vol
并确保设置了只读位
这仅适用于 NTFS 或 ReFS 等原生 Windows 文件系统
另一种解决方案是创建只读自定义函数VHD 映像中的分区。Windows 中的 UDF 格式化程序非常有限因此你应该使用第三方解决方案。例如姆库夫斯您可以指定--media-type=cd
或--media-type=dvd
将 FS 标记为只读。尽管是通用文件系统,但在非光学介质上制作真正通用的 UDF 却很棘手,因此请检查这寻找更好的脚本来格式化 UDF