autounattend.xml 로 Windows 10 · 11 을 무인 설치할 때 네트워크 드라이버가 PnP 로 자동 설치되지 않게 해 설치 내내 오프라인을 유지하려는 경우다. OOBE 의 온라인 계정 강제(Windows 11) 구간을 건너뛰고 로컬 계정으로 끝내는 목적과 함께 쓰인다.
DenyDeviceClasses 정책으로 네트워크 어댑터 클래스 GUID 를 막는다. 네트워크 어댑터 클래스는 {4d36e972-e325-11ce-bfc1-08002be10318} 이다.
<settings pass="specialize">
<component name="Microsoft-Windows-Shell-Setup"
processorArchitecture="amd64"
publicKeyToken="31bf3856ad364e35"
language="neutral" versionScope="nonSxS">
<FirstLogonCommands>
<SynchronousCommand wcm:action="add">
<Order>1</Order>
<CommandLine>reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions" /v DenyDeviceClasses /t REG_DWORD /d 1 /f</CommandLine>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<Order>2</Order>
<CommandLine>reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions\DenyDeviceClasses" /v 1 /t REG_SZ /d "{4d36e972-e325-11ce-bfc1-08002be10318}" /f</CommandLine>
</SynchronousCommand>
</FirstLogonCommands>
</component>
</settings>
안전망으로 설치 후 PowerShell 에서 어댑터를 비활성화하는 명령을 함께 넣어 둔다.
Get-NetAdapter | Disable-NetAdapter -Confirm:$false
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" ...>
<OOBE>
<HideEULAPage>true</HideEULAPage>
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
<ProtectYourPC>3</ProtectYourPC>
</OOBE>
</component>
</settings>
Windows 11 에서 네트워크 연결을 강제하는 화면은 HideOnlineAccountScreens 와 오프라인 상태가 함께여야 넘어간다. 필요하면 OOBE\BypassNRO 레지스트리 값을 추가한다.
| 항목 | Windows 11 | Windows 10 |
|---|---|---|
| 네트워크 PnP 차단 | 적용 | 적용 |
| 시작 버튼 왼쪽 정렬 | 적용 | 기본이 왼쪽이라 불필요 |
| Windows 10 스타일 우클릭 메뉴 | 적용 | 기본이 클래식이라 불필요 |
| Copilot 비활성화 | 적용 | Copilot 없음 |
| 시작 메뉴 폴더 표시 | 빌드별로 동작이 달라 부분 적용 | 부분 적용 |
XML 은 배포 전에 유효성을 확인한다. Windows SIM(System Image Manager)으로 열거나 PowerShell 로 파싱만 해 봐도 오타를 걸러 낼 수 있다.
[xml](Get-Content .\autounattend.xml) | Out-Null; if ($?) { "XML OK" }
설치 후에는 Get-NetAdapter 로 어댑터가 비활성 상태인지, pnputil /enum-devices /class Net 로 드라이버가 설치되지 않았는지 확인한다.