我正在基于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 是可选的任务序列步骤
请注意,图像可以推送到您想要的任何驱动器。