Thanks to @gwblok for pointing me to this twitter thread about Windows OOBE Setup.
When Unattended is not Silent
During Windows 10 OOBE, the Windows Welcome process uses the Cortana voice engine to speak during Windows Setup.
Now we can go look for any updates
Shut up!
Yes, I’m one of those guys who sets my Sound Profile to “silent”, Silence is Golden!
And if I’m going to be running several Windows Deployments in my lab (read my home office), then I would prefer the machine to be silent. Reminds me of the XP/Vista days when we had boot up sounds. How rude.
So how to disable… Well the answer doesn’t appear to be that straight forwards.
SkipMachineOOBE
At first I suggested SkipMachineOOBE, and works on my test machine! Yea!
Then I got a reminder that SkipMachineOOBE is deprecated according to documentation.
DisableVoice
Thanks to @Jarwidmark for pointing me in the thread above to:
reg.exe add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE /v DisableVoice /t REG_DWORD /d 1
However, Microsoft Documentation also states that you should only use this for testing, and that Cortana Voice should be-enabled for users. OK… Fine, we’ll delete the key after setup is complete.
So where to place all this stuff?
Specialize
Several people suggested modifying the local registry within the imaging process, but I would prefer to avoid that, instead trying to see if we can perform the action during Setup using our unattend.xml file.
The command to disable would need to be *before* “OOBE”, sounds like the perfect job for the “Specialize” process.
Some quick testing, verified, and we are ready to go.
Automating OOBE
So, given the guidance from Microsoft on how to automate Windows 10:
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/settings-for-automating-oobe
Here are my changes:
- We disable Cortana during the Specialize Pass before OOBE.
- Then during OOBE, we clear the Cortana setting, and continue.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!– https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/settings-for-automating-oobe –> | |
<?xml version="1.0" encoding="utf-8"?> | |
<unattend xmlns="urn:schemas-microsoft-com:unattend"> | |
<settings pass="specialize"> | |
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> | |
<ComputerName>*</ComputerName> | |
</component> | |
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> | |
<RunSynchronous> | |
<RunSynchronousCommand wcm:action="add"> | |
<Description>Silence is Golden – Silence Cortana during Setup</Description> | |
<Order>1</Order> | |
<Path>reg.exe add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE /v DisableVoice /t REG_DWORD /d 1</Path> | |
</RunSynchronousCommand> | |
</RunSynchronous> | |
</component> | |
</settings> | |
<settings pass="oobeSystem"> | |
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> | |
<OOBE> | |
<ProtectYourPC>1</ProtectYourPC> | |
<HideEULAPage>true</HideEULAPage> | |
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> | |
<HideLocalAccountScreen>true</HideLocalAccountScreen> | |
<HideOnlineAccountScreens>true</HideOnlineAccountScreens> | |
<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> | |
</OOBE> | |
<UserAccounts> | |
<AdministratorPassword> | |
<Value>UABAAHMAcwB3ADAAcgBkAEEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIAUABhAHMAcwB3AG8AcgBkAA==</Value> | |
<PlainText>false</PlainText> | |
</AdministratorPassword> | |
</UserAccounts> | |
<FirstLogonCommands> | |
<SynchronousCommand wcm:action="add"> | |
<Description>ReEnable Cortana After Setup</Description> | |
<Order>1</Order> | |
<CommandLine>reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE /v DisableVoice</CommandLine> | |
<RequiresUserInput>false</RequiresUserInput> | |
</SynchronousCommand> | |
</FirstLogonCommands> | |
</component> | |
<component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> | |
<InputLocale>en-US</InputLocale> | |
<SystemLocale>en-US</SystemLocale> | |
<UILanguage>en-US</UILanguage> | |
<UserLocale>en-US</UserLocale> | |
</component> | |
</settings> | |
</unattend> |
The problem I have, and maybe you’ve seen it as well, is I don’t get Cortana yelling about looking for updates until after the task sequence has completed. And, I don’t get it on all hardware or even every time on the same machine.
Sorry, I don’t know what you’re saying. Cortana happens for me during OOBE.
Cortana could happen once the user has logged into the machine.
My task sequence has completed, all apps installed, settings done, final smsts logs completed, the post task sequence reboot has occurred. Then I get Cortana yelling about looking for updates for about 5 seconds and then goes to the login screen.
Specifically, what is she “Yelling” MDT Litetouch or SCCM ZeroTouch.
Did you make the modifications to DiableVoice in your unattend.xml file like I recommended, or something else?
How are you clearing during OOBE?
see line 38
I also experience the same issue as Mike Horton. OSD Completes, then when i would normally receive my OSD Complete message, this is stopped because “Now we will search for updates” seems to interfere. its not even the voice that annoys me, its the fact i no longer receive our Deployment Complete Pane. If anyone has come across this, would be great to hear some feedback.