之前在试图将闲置的系统盘通过 USB 引导的时候,有过一些了解。也就是在系统注册表中,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
键下的 PortableOperatingSystem
值(DWORD 类型),决定了本系统副本是不是一份便携副本。命令行下用 reg add HKLM\SYSTEM\CurrentControlSet\Control /v PortableOperatingSystem /t REG_DWORD /d 0
即可进行更改,当然,一是需要在本系统运行着的时候,二是要知道把其中最末尾的 0
按需要保持不变或者变为 1
。
后来又接触到一些一些资料,提到还有另一个值也会有影响,具体请参见此页面。老规矩,复制内容到下方。
Windows To Go 与典型的 Windows 安装的区别
- 本机磁碟不会自动联机
- 没有 WinRE 环境
Windows To Go 的部署过程可以参考我前面的文章。
除了以上两个区别,Windows To Go 与传统 Windows 系统的差别在于两个注册表键值 BootDriverFlags
和 PortableOperatingSystem
。
BootDriverFlags
用于控制硬件启动顺序,让系统能在 USB 接口上启动的最重要的控制项;PortableOperatingSystem
用于控制系统是否允许进行更新。
以下是一个将本机系统转换为 Windows To Go 系统的简单一键脚本,switch-to-WTG.bat
,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
:: switch to WTG :: switch to WTG :: Author: muink @echo off %~1 mshta vbscript:createobject("shell.application").shellexecute("%~f0","::","","runas",1)(window.close)&exit :: 设定 USB 启动 for /f "tokens=2* delims= " %%i in ('reg query HKLM\SYSTEM\HardwareConfig /v LastConfig 2^>nul^|findstr /i LastConfig') do set "guid=%%j" reg add HKLM\SYSTEM\HardwareConfig\%guid% /v BootDriverFlags /t reg_dword /d 0x14 /f reg add HKLM\SYSTEM\CurrentControlSet\Control /v PortableOperatingSystem /t reg_dword /d 1 /f :: 防止本机磁盘自动联机(保持脱机) reg add HKLM\SYSTEM\CurrentControlSet\Services\partmgr\Parameters /v SanPolicy /t reg_dword /d 4 /f |
* 此脚本于 Windows 10 1803 系统测试通过
对于 Windows 7/8 这些较老的系统,可以用传统的方式添加 USB 启动的支持,参阅我的另外一个工具。
参考:
- 提交规则:切换系统 Windows To Go 状态(方便安装更新);
- 【转载】控制 Win8 Windows To Go 和 USB 启动的两个关键注册表项;
- 控制 Win8 Windows To Go 和 USB 启动的两个关键注册表项。
上面的“另外一个工具”,则是 UsbBoot-Installer,为 Windows 7/8/10 增加从 USB 引导的能力支持。