在专业化或 OOBE 过程中使用 VHD 文件隐藏分区

在专业化或 OOBE 过程中使用 VHD 文件隐藏分区

我正在基于VHD创建一个系统。分区如下:

+----------+-----------+
| VHD 文件 | 用户数据 |
+----------+-----------+
  |
+------------+
| 系统 |
+------------+

系统卷具有默认驱动器号 C。Windows 7 自动为“VHD 文件”卷分配字母 D,为“用户数据”分配字母 E。“VHD 文件”卷还包含 bootmgr 和页面文件。

我的目的是隐藏“VHD 文件”卷,以便其中没有页面文件,并且用户无法看到其中的 vhd 文件和启动目录。

Windows 7 不允许在 OOBE 后删除字母,因为页面文件在其中。(因此,我们必须重新定位页面文件,重新启动,然后删除字母)。

所以我的猜测是在 OOBE 或专业化过程中完成它。

结果应该像“SYSTEM RESERVED” 100MB 分区——没有驱动器号,没有页面文件,但其中包含关键文件。

欢迎任何想法!

答案1

最终,我成功了。

由于第一遍是专门的,我让它通过REG命令更改注册表中的驱动器号。但是通过注册表删除驱动器号很难编码,而且使用DISKPART需要重新启动,所以我让它在 oobe 模式下发生。

这是我的代码:(如果您有任何改进,请通知我:)

@echo 关闭

设置本地启用扩展

如果“%1”==“specialize”转到专门化
如果“%1”==“oobe”(转到oobe)否则(转到结束)


:专门化
设置 KEY_NAME="HKLM\SYSTEM\MountedDevices"

REM 删除驱动器 D:
设置 VALUE_NAME=\DosDevices\D:
reg 删除 %KEY_NAME% /v %VALUE_NAME% /f

REM 获取驱动器 E 的值:
设置 VALUE_NAME=\DosDevices\E:
FOR /F "usebackq skip=2 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
    设置值名称=%%A
    设置 ValueType=%%B
    设置 ValueValue=%%C
如果没有定义 ValueName 转到结束

REM 使用驱动器 E 的值创建驱动器 D
设置 VALUE_NAME=\DosDevices\D:
reg 添加 %KEY_NAME% /v %VALUE_NAME% /t %ValueType% /d %ValueValue% /f
REM 删除驱动器 E:
设置 VALUE_NAME=\DosDevices\E:
reg 删除 %KEY_NAME% /v %VALUE_NAME% /f
REM 设置页面文件
设置 KEY_NAME="HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management"
设置 VALUE_NAME=PagingFiles
设置 ValueType=REG_MULTI_SZ
设置 ValueValue="D:\pagefile.sys 0 0"
reg 添加 %KEY_NAME% /v %VALUE_NAME% /t %ValueType% /d %ValueValue% /f
睡眠结束
转到结束

:oobe
REM 删除驱动器 E:
(回显选择卷 e &回显删除字母=e)| diskpart

:结尾

答案2

使用 MDT 2012,这应该可以通过任务序列来完成。

听起来你可能把事情弄得比实际更复杂了。MDT 是 Microsoft 随 Vista 和 Windows 7 发布的系统,旨在使操作系统部署 (OSD) 变得更加简单。

在此处输入图片描述 测试任务序列

在此处输入图片描述 部署到 VHD 是可选的任务序列步骤

在此处输入图片描述 请注意,图像可以推送到您想要的任何驱动器。

相关内容