Introdução
– nome de marketing da nova versão do Windows 10. O lançamento desta versão foi anunciado em setembro de 2018, portanto, possui a versão 1809, sendo 18 – ano, 09 – mês. Muitas páginas foram escritas sobre o novo lançamento do Windows 10 1809, mas a maioria delas se dedica a diferentes 'enfeites', 'bellezas' e várias funcionalidades que são demandadas em ambientes domésticos.
Neste artigo, falaremos apenas sobre as funcionalidades que podem ser úteis para fabricantes de dispositivos de uso específico. Em particular, sobre as novas possibilidades do modo 'Quiosque'. Também abordaremos a mudança nos nomes dos esquemas de manutenção das edições corporativas do Windows.
O antigo esquema de manutenção com novo nome
Começarei com uma breve explicação: no segmento corporativo das edições do Windows, existem dois esquemas de manutenção pelos quais o Windows recebe atualizações. Os esquemas de manutenção têm designação alfabética. Atualmente, as ramificações de manutenção são chamadas de LTSC e SAC.
LTSC – significa Anteriores, esse canal era chamado de LTSB – Long Term Servicing Branch, a Microsoft apenas alterou o nome do canal de manutenção, mas a própria manutenção permaneceu a mesma.
Além disso, a Microsoft mudou o nome do ramo de manutenção CBB – Current Branch for Business, que agora é chamado de SAC – . Novamente, apenas o nome foi alterado.
Mas é importante mencionar que para os ramos de manutenção LTSC e SAC são utilizados diferentes distribuições do Windows.
Um pouco sobre o novo modo quiosque no SAC
Como já mencionei, LTSC e SAC possuem distribuições diferentes. No LTSC não há aplicativos universais padrão nem loja de aplicativos, enquanto no SAC há. Assim, no LTSC não há o navegador Edge, enquanto no SAC ele está disponível. Se ao configurar o quiosque, você escolher o navegador Edge, agora há dois modos de acesso:
- Como sinal digital ou display interativo
- Como navegador público
Não vou me aprofundar na configuração desses modos, pois a configuração é muito simples e é feita pela interface gráfica. Basta criar um usuário que não pertença ao grupo 'Administradores', ativar o modo quiosque usando o EDGE e observar o funcionamento desses modos.
Quiosque com vários aplicativos
Alguns pensam que o uso licenciado de implica o funcionamento de apenas um aplicativo no dispositivo, na verdade não é assim. O dispositivo deve ser destinado a realizar uma única tarefa de negócios e o usuário não deve ter acesso à área de trabalho. Agora a Microsoft forneceu uma ferramenta para usar vários aplicativos. Este modo é chamado de "multi-app kiosk", e, para abreviar, vou chamá-lo de "multikiosk". Neste artigo, abordaremos a configuração deste modo usando o pacote de configuração e algumas características deste modo.
Um pouco sobre o modo "Multikiosk"
Ao acessar a conta do usuário para a qual o modo multikiosk está configurado, o sistema funcionará em modo tablet. O menu "Iniciar" será expandido para a tela inteira, exibindo os widgets dos aplicativos.
Lista das principais configurações e capacidades do modo:
- Configuração para múltiplos usuários ou grupos
- Cada usuário ou grupo pode ter configurações individuais atribuídas
- Possibilidade de uso de aplicativos universais e clássicos
- Possibilidade de iniciar automaticamente um dos aplicativos quando o usuário faz login no sistema
- Funcionamento dos aplicativos por meio de uma lista de permissões
- Acesso a pastas por meio de uma lista de permissões
É importante observar o item 5. Por padrão, será permitido o funcionamento apenas dos aplicativos necessários para o funcionamento do sistema; outros aplicativos devem ser adicionados à lista de permitidos. Ou seja, agora não é mais necessário configurar o AppLocker separadamente. A propósito, para evitar conflitos nas configurações do AppLocker, no modo multikiosk todas as regras configuradas do AppLocker não terão efeito.
No item 6 é mencionada uma boa possibilidade, mas no momento, é possível conceder permissão para gravação apenas na pasta "Downloads". O modo permite o uso de aplicativos universais e clássicos. Todas as configurações do modo são especificadas em um arquivo XML, no qual também é possível especificar configurações para um quiosque com um único aplicativo.
Agora vamos tentar configurar tudo isso...
O que precisamos...
- Em primeiro lugar, precisamos do próprio sistema que suporta o modo multikiosk. a versão de demonstração
- Qualquer editor XML
- Para aplicar as configurações do multimode:
- Para o método nº 1 — ICD, que faz parte da ADK. A ADK pode ser
- Para o método nº 2 – utilitário PsExec. O utilitário pode ser
Ele disse – "Vamos!"
Todos os testes que farei serão no Windows 10 IoT Enterprise 1809 LTSC x32 versão comercial, e não a de demonstração. O sistema ficará sem ativação, pois a falta de ativação não afeta a funcionalidade do sistema. Optei pela versão de 32 bits apenas porque ocupa menos espaço e trabalhar com imagens do sistema será mais rápido.
Passo 1 – instalação
A instalação do Win 10 IoT Enterprise não difere da instalação do Win 10 Enterprise, portanto não descreverei todo o processo de instalação, apenas mencionarei alguns detalhes.
Por precaução, lembre-se de não instalar o sistema sobre o já existente. Quando o instalador perguntar sobre o local de instalação do sistema, exclua todas as partições no futuro disco do sistema e indique o disco não alocado.
Instale o sistema sem conexão à internet, para que o sistema não puxe nada desnecessário.
Como estaremos criando imagens de backup do sistema e para isso vamos encapsulá-lo em modo de auditoria, podemos economizar um pouco de tempo iniciando o sistema em modo de auditoria logo após a instalação. Para isso, quando o sistema lhe pedir para escolher a região "Vamos começar com a região. Está correto?", basta pressionar "Ctrl+Shift+F3".
Passo 2 – criando a imagem do sistema
Como vamos experimentar várias novas configurações no sistema, não está descartado que algo não saia como planejado e precisemos restaurar o sistema ao seu estado original. Para uma rápida recuperação, precisamos criar uma imagem do sistema. A única coisa que farei é copiar o "kit de ferramentas do cavalheiro" – o script e o arquivo de respostas. Todos os arquivos estarão na pasta "Sysprep", que eu copiei para a raiz do disco do sistema. E, claro, compartilharei com você este "kit de ferramentas do cavalheiro".
Sysprep.bat – para encapsular o sistema.
@echo off
chcp 1251>nul
net session>nul 2>nul
if %errorLevel% neq 0 (powershell -command "Start-Process "%~s0" -Verb RunAs"&exit)
tasklist /fi "ImageName eq sysprep.exe" | find /i "sysprep.exe"
if %errorlevel% lss 1 (taskkill /im sysprep.exe)
set AdminName=Admin
net user minName%>nul 2>nul
if %errorLevel% neq 0 (call :AddAdmin "minName%")
if %errorLevel% neq 0 (call :ShowMessage "‡‡‡Erro ao criar nova conta de administrador "minName%"‡‡Pressione qualquer tecla para encerrar o script"&pause>nul&exit)
pushd "%~dp0"
cls
call :ShowMessage ‡‡‡‡‡‡‡‡‡‡
echo 1 - Selar o sistema em modo de auditoria
echo 2 - Selar o sistema em modo de boas-vindas
:Select
set /p Choice="Digite o número do menu: "
if "%Choice%"=="1" (goto Audit)
if "%Choice%"=="2" (goto OOBE)
echo.&echo Valor selecionado inválido.&goto Select
exit
:Audit
call :ShowMessage "‡‡‡‡‡Selando o sistema em modo de auditoria"
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionRun /v KillSysprep /t REG_SZ /d "taskkill /im sysprep.exe" /f
%SYSTEMROOT%System32Sysprepsysprep.exe /audit /generalize /shutdown /quiet
goto :eof
:OOBE
call :ShowMessage "‡‡‡‡‡Selando o sistema em modo de boas-vindas"
reg delete HKLMSoftwareMicrosoftWindowsCurrentVersionRun /v KillSysprep /f
powershell -command "(Get-Content -path 'Unattend.xml' -Raw).Trim() -replace 'Architecture=""".+?"""','Architecture="""%PROCESSOR_ARCHITECTURE%"""' | Set-Content -path 'Unattend.xml'"
%SYSTEMROOT%System32Sysprepsysprep.exe /oobe /generalize /shutdown /quiet /unattend:Unattend.xml
goto :eof
:AddAdmin
setlocal
set UserName=%~1
if not defined UserName (echo Nome de usuário não fornecido&endlocal&exit /b 1)
call :GetGroupName "S-1-5-32-544" AdminGroup
if not defined AdminGroup (endlocal&exit /b 2)
call :GetGroupName "S-1-5-32-545" UserGroup
if not defined UserGroup (endlocal&exit /b 3)
net user %UserName% /add
wmic useraccount where "Name='%UserName%'" set PasswordExpires=False>nul
net localgroup minGroup% %UserName% /add
net localgroup %UserGroup% %UserName% /delete
endlocal&exit /b 0
goto :eof
:GetGroupName
if "%~1"=="" (echo SID do grupo não fornecido&goto :eof)
set %2=
for /f "tokens=2 delims= " %%i in ('whoami /groups /fo table^|find "%~1"') do set %2=%%i
if not defined %2 (echo Erro ao determinar o nome do grupo pelo SID "%~1")
goto :eof
:ShowMessage
setlocal enabledelayedexpansion
set String=%~1
if not defined String (echo.&setlocal disabledelayedexpansion&goto :eof)
set /a ConCols=120 & set /a Num=1
set "String[!Num!].str=%String:‡=" & set /a Num+=1 & set "String[!Num!].str=%"
for /l %%a in (1,1,%Num%) do (
for /l %%b in (0,1,%ConCols%) do if "!String[%%a].str:~%%b!" == "" (set "String[%%a].str= !String[%%a].str! "&set /a String[%%a].len-=1) else (set /a String[%%a].len+=0||set /a String[%%a].len=0)
if not defined String[%%a].str (set String[%%a].str= )
if not !String[%%a].len! equ 0 (call set String[%%a].str=%%String[%%a].str:~,!String[%%a].len!%%)
if "!String[%%a].str: =!"=="" (echo.) else (echo !String[%%a].str!))
setlocal disabledelayedexpansion
goto :eofAo executar o script, ele verificará se a conta «Admin» existe e a criará caso não exista. A conta será adicionada ao grupo «Administradores».
Unattend.xml – arquivo de respostas para o sysprep.
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f
1
Não mostrar página de chave
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f
2
Não criar conta
cmd.exe /c rd %systemdrive%Sysprep /s /q
3
Excluir Pasta
true
Admin
en-US; pt-BR
pt-BR
pt-BR
pt-BR
true
true
true
true
true
1Ao selar no modo de auditoria, o script adicionará ao registro o comando para encerrar o processo "sysprep.exe" para não precisar fechar a janela do sysprep manualmente a cada vez. Ao selar no modo de boas-vindas, o script removerá do registro o comando para fechar a janela e mudará o valor da arquitetura no arquivo de respostas para o atual. O arquivo de respostas contém os parâmetros para inicializar o sistema sem a participação do usuário e o comando para excluir a pasta "Sysprep" na raiz do disco do sistema.
Agora vou selar o sistema no modo de auditoria usando "Sysprep.bat" e criar uma imagem do sistema. A imagem do sistema será criada com o DISM e eu farei a imagem apenas da partição do sistema. Se você estiver criando a imagem apenas da partição do sistema, e não de todo o disco, não se esqueça de copiar o conteúdo do diretório "WindowsSystem32Recovery" para a primeira partição na pasta "RecoveryWindowsRE" após a implantação do sistema. Isso deve ser feito antes de inicializar o SO, pois após a inicialização do SO, o diretório "WindowsSystem32Recovery" já estará vazio.
Passo 3 – localização do sistema
O pacote de idiomas pode ser instalado sem conexão com a internet, se você já tiver esse pacote. Se não tiver, o sistema fará o download automaticamente pela internet quando você adicionar o idioma nas configurações. Apenas não utilize o pacote de idiomas de versões anteriores do SO. Para Windows 10 1809, deve ser o pacote de idiomas específico para Windows 10 1809.
A Microsoft está seguindo seu plano - a transição gradual das configurações do menu clássico para o novo, portanto, no painel de controle clássico você não encontrará mais configurações para alterar o idioma e instalar o pacote de idiomas. Essas configurações agora estão apenas nas configurações do sistema.
No modo de auditoria, você pode enfrentar o problema de abrir as configurações do sistema a partir do menu "Iniciar". Para abrir as configurações do sistema, execute o comando - "ms-settings:", preste atenção no dois pontos no final do comando, sem ele o comando não funcionará. Após abrir as configurações do sistema uma vez com esse comando, você poderá abri-las através do menu gráfico.
Mas nas configurações do sistema você pode instalar o pacote de idiomas se o sistema estiver conectado à internet, não há opção de selecionar a instalação do pacote de idiomas a partir de um arquivo local.
Não vou descrever o processo de localização do sistema, pois isso tornará o artigo muito pesado, especialmente porque o processo de localização está detalhadamente . Mas gostaria de chamar sua atenção para uma peculiaridade na mudança de idioma do sistema após a instalação do pacote de idioma via console. Essa peculiaridade está descrita na mesma wiki à qual forneci o link anteriormente, na subseção .
Vou instalar o pacote de idioma sem conexão à internet.
Após a completa localização do sistema, certifique-se de criar uma imagem do sistema.
Passo 4 – instalação dos aplicativos necessários
Como nos sistemas LTSB e LTSC não há loja de aplicativos, a instalação de aplicativos da "Microsoft Store" apresenta algumas dificuldades, principalmente – o download do aplicativo. Para facilitar o download de aplicativos, a empresa "Adguard" criou um serviço muito conveniente – , através do qual você pode obter links temporários para baixar aplicativos e seus componentes.
Para instalar um aplicativo, você precisará de arquivos com as extensões "Appx" e "AppxBundle". Antes de instalar o próprio aplicativo, é necessário instalar seus componentes. Normalmente, os componentes do aplicativo podem ser intuitivamente diferenciados pelo nome do arquivo.
Para não deixar o artigo muito longo, não vou descrever detalhadamente o processo de instalação de aplicativos, especialmente porque há uma . Mas adicionarei mais uma forma de instalar aplicativos na conta atual. Os aplicativos podem ser instalados usando o programa , mas para instalar aplicativos será necessária uma conexão à internet; no entanto, os aplicativos poderão ser instalados com um clique duplo e você não precisará de seus componentes, todos os componentes necessários serão baixados e instalados .
E um pequeno lembrete: ao instalar um aplicativo na conta atual, não será possível congelar o sistema. Para saber como instalar aplicativos de maneira a permitir o congelamento do sistema, consulte a instrução mencionada acima. E para verificar o funcionamento do quiosque, os aplicativos que já estão disponíveis serão suficientes.
Passo 5 – criação do arquivo de configuração para o quiosque
Chegamos agora ao mais interessante – à configuração do modo quiosque. Vamos olhar na configuração e ver. Primeiramente, precisamos criar um arquivo XML de configuração, cujo exemplo completo você pode .
Vamos começar com a configuração da posição dos blocos. A forma mais simples de criar uma configuração XML para os blocos é .
Primeiro, adicione os blocos dos aplicativos que precisamos ao menu Iniciar. Pressione "Win+s" para abrir a pesquisa, encontre o aplicativo desejado, clique com o botão direito do mouse sobre ele e selecione "Fixar na tela inicial".
Eu fixei os seguintes aplicativos:
- Bloco de Notas
- Calculadora
- Internet Explorer
- Paint
- WordPad
- Parâmetros
- Segurança do Windows
Os últimos dois aplicativos foram fixados porque na instalação padrão do LTSC não há outros aplicativos universais. Note que os blocos dos aplicativos clássicos se referem a atalhos. Agora, movendo os blocos diretamente no menu Iniciar, eu vou dividir os blocos fixados em dois grupos. Para criar um novo grupo de blocos, arraste um bloco para cima ou para baixo em relação aos outros blocos, e um delimitador intuitivo aparecerá. Você pode nomear os grupos como achar melhor; para isso, coloque o cursor do mouse acima do grupo e, quando aparecer a mensagem "Nomear grupo", clique com o botão esquerdo do mouse. Eu vou nomear o primeiro grupo como "Configurações", que incluirá os blocos "Configurações" e "Segurança do Windows". O segundo grupo eu chamarei de "Aplicativos de Escritório", que incluirá todos os outros blocos. Aliás, é possível mover grupos inteiros de blocos arrastando-os pelas duas faixas que estão à direita no topo do nome do grupo.
Como o nome do bloco "Segurança do Windows" não cabe totalmente, vou alterar seu tamanho para "Largo". Para mudar o tamanho do bloco, clique com o botão direito do mouse sobre o bloco e escolha "Alterar tamanho".
Após a configuração, exportamos o estado atual, executando o comando no PowerShell – "Export-StartLayout – path C:SysprepStartLayout.xml".
Em seguida, o mais simples é não criar o arquivo de configurações manualmente, mas Configurações – clique no botão «Copy», cole o conteúdo em um bloco de notas e salve como «MultiAppKiosk.xml». Agora altere as configurações para as suas. Para modificar as configurações dos blocos anexados, copie o bloco completo «StartLayoutCollection» de «StartLayout.xml» para «MultiAppKiosk.xml». Para adicionar aplicativos à lista de permissões, é necessário inserir os identificadores dos aplicativos universais na seção «AllowedApps» e nesse mesmo bloco adicionar o caminho completo para os arquivos executáveis dos aplicativos clássicos, que está especificado nas propriedades dos atalhos referenciados pelos blocos. Para acessar rapidamente o atalho, clique com o botão direito no bloco fixado e navegue pelo menu «Дополнительно > Перейти к расположению файла». Observe que para especificar o ID do aplicativo universal, usa-se o parâmetro «AppUserModelId», e para indicar o caminho completo do aplicativo clássico, usa-se o parâmetro «DesktopAppPath». E mais uma pequena observação: se você pretende usar o IE em um sistema x64, na lista de aplicativos permitidos, deve especificar dois caminhos para o arquivo executável «Program FilesInternet Exploreriexplore.exe» e «Program Files (x86)Internet Exploreriexplore.exe».
Não vou conceder acesso às pastas, então estou removendo a seção «FileExplorerNamespaceRestrictions».
A exibição da barra de tarefas não me atrapalha, então na seção «Taskbar» deixo tudo como está.
No exemplo, estão definidos dois perfis, mas eu terei apenas um perfil, então a seção com o segundo perfil pode ser removida. Antes de excluir, observe o exemplo de inicialização automática do aplicativo com argumentos.
Na seção «Configs», as contas estão vinculadas a perfis. Note que a uma única conta podem ser vinculadas várias contas. Mas, como estou interessado apenas em uma conta, removerei todos os vínculos, exceto o primeiro – os blocos «Config». Na vinculação restante, colocarei o nome de usuário «User».
Eu obtive um arquivo assim com os parâmetros
MultiAppKiosk.xml
<![CDATA[
]]>
UsuárioAo criar seus arquivos XML de configuração, lembre-se de que cada perfil deve ter um ID exclusivo, não apenas dentro de um único arquivo XML, mas em todo o sistema operacional. Ou seja, para não se confundir, é ideal criar um novo identificador a cada vez. Isso pode ser feito no PowerShell com o comando «[guid]::NewGuid()». E não se esqueça de salvar o arquivo na codificação «UTF-8»; se o arquivo for salvo na codificação «ANSI», você receberá um erro ao montar o pacote de preparação se o arquivo XML contiver caracteres cirílicos.
Passo 6 – Aplicação das configurações do quiosque múltiplo
Vamos considerar duas maneiras de aplicar as configurações descritas no arquivo de configuração. A primeira é usar um pacote de preparação, que deve ser criado no ICD. Para alguns, essa abordagem pode ser mais familiar. A segunda é utilizando o «MDM Bridge WMI Provider», que me pareceu mais conveniente.
Método nº 1
Para quem não possui o ICD, e instale-o. A instalação do ADK é muito simples, você pode deixar o conjunto de componentes como padrão.
Inicie o ICD, clique no bloco «Preparação adicional», indique o nome e a pasta do projeto e clique em «Avançar». Na próxima janela, selecione «Todas as versões do Windows para desktop» e clique em «Avançar». Você pode pular a importação do pacote de preparação clicando em «Concluir».
Expanda o menu suspenso «Configurações de tempo de execução», em seguida, expanda o submenu «AssignedAccess» e selecione a opção «MultiAppAssignedAccessSettings». No topo da seção média da janela do ICD, clique no botão «Explorar» e indique a localização do arquivo XML com as configurações. Para garantir, você pode salvar o projeto pressionando «Ctrl+s». No canto superior esquerdo do ICD, selecione «Exportar» e no menu suspenso escolha «Pacote de preparação». Como proprietário, selecione «Administrador de TI», todas as outras questões podem ser ignoradas clicando em «Avançar» e, no final, clique em «Compilar» e «Concluir».
No sistema instalado, não se esqueça de criar o usuário «User», que não pode ser adicionado ao grupo «Administradores», caso contrário o quiosque múltiplo não funcionará. Eu criei o usuário na ferramenta «Gerenciamento do Computador» com uma senha que não expira.
Agora, vamos iniciar o pacote de preparação no sistema previamente instalado. Após a aplicação do pacote de preparação, o menu iniciar e as configurações do administrador serão alterados. No coluna esquerda do menu iniciar, os botões: «Documentos», «Imagens», «Configurações» devem desaparecer. Se o menu iniciar não mudou, algo deu errado. O pacote instalado pode ser removido acessando a janela «Configurações > Contas > Acesso à conta de trabalho ou escola > Adicionar ou remover pacote de preparação».
Se o menu iniciar foi alterado, as configurações foram aplicadas ao sistema. Faça login com o usuário para o qual o multikiosk foi configurado e veja o resultado.
Método nº 2
Aplicação das configurações usando o «MDM Bridge WMI Provider» . A conveniência deste método reside na flexibilidade de uso e na possibilidade de evitar muitas operações manuais necessárias para criar o pacote de preparação. Aqui, cada um pode elaborar uma solução que seja conveniente para si. Eu criei um par de scripts assim.
MiltiKiosk.bat – script para execução
@echo off
chcp 1251>nul
if not exist "%~dp0psexec.exe" call :ShowMessage "‡‡‡‡‡‡‡‡‡‡‡‡‡O arquivo psexec.exe é necessário para o funcionamento do script‡‡Pressione qualquer tecla para encerrar o script"&pause>nul&exit
net session>nul 2>nul
if %errorLevel% neq 0 (powershell -command "Start-Process "%~s0" -Verb RunAs"&exit)
for /f "tokens=2 delims==" %%i in ('wmic useraccount where "Name='%UserName%'" get SID /value^|find "SID"') do set SID=%%i
reg add HKU%SID%SoftwareSysinternalsPsExec /v EulaAccepted /t REG_DWORD /d 1 /f
for /f %%i in ('dir "%~dp0%~n0*.ps1" /b /o:n') do set PSFilePath=%~dp0%%i
if not defined PSFilePath (echo Arquivos PS não encontrados começando com - "%~n0"&pause&exit)
set PSFilePath=%PSFilePath: =` %
"%~dp0psexec.exe" -i -s powershell -command "Start-Process powershell.exe -ArgumentList '-ExecutionPolicy Unrestricted -Command %PSFilePath%'"
exit
:ShowMessage
setlocal enabledelayedexpansion
set String=%~1
if not defined String (echo.&setlocal disabledelayedexpansion&goto :eof)
set /a ConCols=120 & set /a Num=1
set "String[!Num!].str=%String:‡=" & set /a Num+=1 & set "String[!Num!].str=%"
for /l %%a in (1,1,%Num%) do (
for /l %%b in (0,1,%ConCols%) do if "!String[%%a].str:~%%b!" == "" (set "String[%%a].str= !String[%%a].str! "&set /a String[%%a].len-=1) else (set /a String[%%a].len+=0||set /a String[%%a].len=0)
if not defined String[%%a].str (set String[%%a].str= )
if not !String[%%a].len! equ 0 (call set String[%%a].str=%%String[%%a].str:~,!String[%%a].len!%%)
if "!String[%%a].str: =!"=="" (echo.) else (echo !String[%%a].str!))
setlocal disabledelayedexpansion
goto :eofMiltiKiosk_Ver.12.ps1 – script principal
Função ConvertEncoding ([string]$From, [string]$To) {
Iniciar{$encFrom = [System.Text.Encoding]::GetEncoding($From);$encTo = [System.Text.Encoding]::GetEncoding($To)}
Processar{$bytes = $encTo.GetBytes($_);$bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes);$encTo.GetString($bytes) -replace [char]0, ''}
}
Função ShowMessage ($Message='', $Align=0) {
Tentar {$Align = [decimal]$Align} Capturar {Return 'O parâmetro Align pode ser um número somente' | ConvertEncoding 'windows-1251' -To 'UTF-16'}
se ($Message -is [int]) {para ($i=1; $i -le $Message; $i++) {Write-Host}; Return}
se ([System.Text.Encoding]::Default.WindowsCodePage -eq 1252) {$Message = $Message | ConvertEncoding 'windows-1251' -To 'UTF-16'}
se ($Message -is [string]) {[array] $Message = $Message}
para cada ($String em $Message) {
Tentar {$String = [int]$String} Capturar {}
se ($String -is [int]) {para ($i=1; $i -le $String; $i++) {Write-Host}; continue}
se ($Host.UI.RawUI.BufferSize.Width -gt $String.Length) {
se ($Align -eq 0) {Write-Host $String
} senão {Write-Host ("{0}{1}" -f (' ' * (([Math]::Max(0, $Host.UI.RawUI.BufferSize.Width / $Align) - [Math]::Floor($String.Length / $Align)))), $String)}
} senão {Write-Host $String}
}
}
$script:NameSpace="rootcimv2mdmdmmap"
$script:ClassName="MDM_AssignedAccess"
$script:MultiAppKiosk = Get-CimInstance -Namespace $NameSpace -ClassName $ClassName
se (-not $MultiAppKiosk) {ShowMessage -Message (3, 'Erro ao obter objeto de configuração', 2, 'Pressione "Enter" para sair do script') -Align 2; Read-Host; Exit}
Função MainMenu() {
ShowMessage (13, ' 0 - Sair', ' 1 - Selecionar arquivo XML para instalação', ' 2 - Mostrar configuração atual do multiquiosque', ' 3 - Remover configurações do multiquiosque', 1)
$local:PromptText = 'Escolha uma ação'
se ([System.Text.Encoding]::Default.WindowsCodePage -eq 1252) {$PromptText = $PromptText | ConvertEncoding 'windows-1251' -To 'UTF-16'}
$local:Selections = 1..2
Enquanto ($true) {
$Select = Read-Host -Prompt $PromptText
Switch ($Select) {
0 {exit}
1 {XMLSelection}
2 {ShowMessage -Message (1, 'Iniciando configuração') -Align 2; Write-Host $MultiAppKiosk.Configuration; ShowMessage -Message ('Fim da configuração', 1, 'Pressione "Enter" para retornar ao menu', 1) -Align 2; Read-Host}
3 {$MultiAppKiosk.Configuration = $Null; Set-CimInstance -CimInstance $MultiAppKiosk; ShowMessage -Message (1, 'Comando de remoção de configurações completado', 1) -Align 2}
DEFAULT {ShowMessage 'Valor selecionado inválido'}
}
se ($Selections -contains $Select) {Clear-Host; ShowMessage (15, ' 0 - Sair', ' 1 - Selecionar arquivo XML para instalação', ' 2 - Mostrar configuração atual do multiquiosque', ' 3 - Remover configurações do multiquiosque', 1)}
}
}
Função XMLSelection() {
Clear-Host
se (!(Test-Path -Path $PSScriptRoot'XML')) {ShowMessage -Message (13, 'Diretório não encontrado', $('"'+$PSScriptRoot+'XML"'), 1, 'Pressione "Enter" para retornar ao menu anterior') -Align 2; Read-Host; Return}
$local:XMLList = @()
$XMLList += Get-ChildItem -Path $PSScriptRoot'XML' -name -filter '*.xml'
se ($XMLList.Count -eq 0) {ShowMessage -Message (13, 'Nenhum arquivo XML encontrado no diretório', $('"'+$PSScriptRoot+'XML"'), 1, 'Pressione "Enter" para retornar ao menu anterior') -Align 2; Read-Host; Return}
[int]$local:Indent = 13 - $XMLList.Count / 2; se ($Indent -lt 1) {$Indent = 1}
ShowMessage ($Indent, ' 0 - Retornar ao menu anterior')
para ($i=0; $i -le $XMLList.GetUpperBound(0); $i++) {Write-Host $(' '+($i+1)+' - '+$XMLList[$i])}
Write-Host
$local:PromptText = 'Escolha um arquivo para instalação'
se ([System.Text.Encoding]::Default.WindowsCodePage -eq 1252) {$PromptText = $PromptText | ConvertEncoding 'windows-1251' -To 'UTF-16'}
$local:Selections = 1..$XMLList.Count
$local:BackToPrevMenu = 0
Enquanto ($BackToPrevMenu -eq 0) {
$Select = Read-Host -Prompt $PromptText
Switch ($Select) {
0 {$BackToPrevMenu = 1}
{$Selections -contains $Select} {ShowMessage $('Comando para aplicar configurações do arquivo '+$XMLList[$Select-1]);
$local:Config = (Get-Content -encoding UTF8 -path $($PSScriptRoot+'XML'+$XMLList[$Select-1]) -Raw).Trim()
$local:GUIDs = [regex]::matches($Config, '{.+?}') | select -ExpandProperty Value | Get-Unique
foreach ($GUID in $GUIDs) {$Config = $Config -replace $(''+$GUID),$('{'+[guid]::NewGuid()+'}')}
$Config = $Config -replace '&','&' -replace '<','<' -replace '>','>' -replace "'",''' -replace '"','"'
$MultiAppKiosk.Configuration = $Config
Set-CimInstance -CimInstance $MultiAppKiosk
}
DEFAULT {ShowMessage ('Valor selecionado inválido')}
}
}
}
MainMenuSe você deseja usar minha solução, salve todos os scripts mencionados em uma única pasta com seus nomes originais e coloque também o arquivo "PsExec.exe" nessa pasta. Além disso, crie uma pasta chamada "XML" nesta mesma pasta e copie os arquivos XML para configurar o quiosque multitoque. Eu usarei o mesmo arquivo que no primeiro método.
MultiAppKiosk.xml
<![CDATA[
]]>
UsuárioUm pouco sobre as características do script. O script é projetado para usar arquivos XML com codificação "UTF8"; se você deseja usar a codificação "ANSI", remova o parâmetro "encoding UTF8" na leitura do arquivo. Os arquivos XML devem ser colocados na pasta "XML" sem a substituição de caracteres, o script substituirá automaticamente os caracteres especiais pelos seus respectivos símbolos. Para não se confundir com os GUIDs de vinculação dos usuários aos perfis, você pode simplesmente indicar o número ou o nome do usuário entre chaves, todo o conteúdo entre chaves será substituído pelos GUIDs.
Usar o script é muito simples, basta executá-lo e escolher a opção desejada. Para mudar a configuração atual para uma nova não é necessário excluir a atual, ela será sobrescrita. Não se esqueça de criar os usuários que estão mencionados no arquivo de configuração.
Ao visualizar a configuração atual do quiosque multitoque na mesma sessão em que ela foi aplicada, os caracteres especiais serão exibidos como combinações de símbolos substitutos. Após mudar de sessão (reiniciar o script), todos os caracteres especiais serão exibidos em sua forma original.
Passo 7 – selagem do sistema
O quiosque multitoque está funcionando, e isso é tudo, aparentemente...
Se tudo está indo conforme o planejado, você está deixando algo passar.
Não esqueçamos que ainda precisamos alterar o sistema do modo de auditoria para o modo de boas-vindas. Bem, estamos prontos para isso, executamos "Sysprep.bat", escolhemos a opção 2, o sistema é selado. Ligamos o dispositivo, o sistema inicia, entramos na conta do usuário para a qual o quiosque multitoque foi configurado e não conseguimos entrar. Após a mensagem "Bem-vindo", aparece a mensagem "Saindo do sistema".
Inicialmente, eu queria descrever apenas a solução do problema, mas depois decidi descrever os passos para identificar o problema e encontrar a solução mais simples, pois muitos dos leitores provavelmente terão dúvidas – 'E se isso acontecer...'. Acredito que a descrição de vários experimentos economizará um tempo significativo se você desejar encontrar outra solução. Para que a informação seja o mais precisa possível e para me certificar mais uma vez da ausência de erros, descreverei os experimentos no formato 'fiz - registrei'. Ou seja, farei os experimentos descritos mais uma vez.
Experimentos
Então, o que temos. No sistema, existem duas contas:
«Admin» – no grupo «Administradores»
«User» – no grupo «Usuários»
No modo de auditoria, o modo quiosque funcionou, mas depois não funcionou.
Experimento 1
Removemos o pacote de preparação instalado, na ferramenta 'Gerenciamento do Computador' removemos o usuário 'User' e criamos um novo usuário com o nome 'User', aplicamos o pacote de preparação, acessamos a conta 'User' – não funciona. Acessamos como 'Admin', removemos o usuário 'User' do grupo 'Usuários', adicionamos ao grupo 'Administradores', acessamos como 'User' – não funciona. Acessamos como 'Admin', removemos o pacote de preparação com o quiosque, acessamos como 'User' – consegui entrar, mas, naturalmente, o modo quiosque não funciona, pois o pacote de preparação foi removido.
Experimento 2
Carregamos a imagem do sistema – localizada em português no modo de auditoria.
O sistema iniciou, pressionamos «Win+r», pois a janela do sysprep se fechou automaticamente, executamos o comando «sysprep», na janela que se abre, iniciamos «sysprep». Configurações do sysprep na janela: «Ir para a janela de boas-vindas do sistema (OOBE)», «Preparar para uso», «Reiniciar». Clicamos em «OK» e aguardamos a saudação do sistema operacional. Respondemos às perguntas na primeira inicialização do sistema: «Continuar no idioma selecionado?» – «português»; região – Brasil; layout do teclado – Português; adicionar segundo layout de teclado – pular; «Vamos conectar você à rede» – «Pule por enquanto»; conectar à internet – não; acordo de licença – aceitar; «Quem usará este computador» – «Teste»; criação de senha – deixo o campo vazio; trabalho fácil em diferentes dispositivos – não; opções de privacidade – aceitar. O sistema operacional iniciou, na ferramenta «Gerenciamento de Computador» criamos um usuário com o nome «User», adicionamos o pacote de preparação. Resultado – não funciona.
Experimento 3
Carregamos a imagem do sistema – localizada em português no modo de auditoria.
O sistema iniciou, conectamos o sistema à internet, executamos o comando «gpedit.msc» e na seção «Central de Atualizações do Windows» ativamos a opção «Ativar atualizações recomendadas por meio de atualização automática», para garantir, reiniciamos. Na central de atualizações clicamos em «Verificar se há atualizações» e reiniciamos até que todas as atualizações sejam instaladas. Desconectamos o sistema da internet. Iniciamos «sysprep» em modo gráfico e repetimos todas as ações que foram descritas na etapa anterior, desde a execução da ferramenta «sysprep» até a adição do pacote de preparação. Resultado – não funciona.
Experimento 4
Carregamos a imagem do sistema – em inglês, no modo audit.
Iniciamos «sysprep» em modo gráfico, selamos o sistema operacional com as mesmas configurações que durante o experimento 2. Na primeira inicialização do sistema, escolhemos as mesmas configurações que no experimento 2, exceto para as opções regionais e de idioma, pois o idioma português não está disponível. Da mesma forma, criamos o usuário «User» e adicionamos o pacote de preparação. Resultado – funciona. Ou seja, o problema está relacionado à localização.
Experimento 5
Carregamos a imagem do sistema – localizada em português no modo de auditoria.
Na ferramenta «Gerenciamento de Computador» criamos o usuário «User», adicionamos o pacote de preparação, acessamos a conta «User», e a mídia funciona.
Saímos da conta e entramos com a conta 'Admin'. Iniciamos o PowerShell com privilégios de administrador, executamos o comando 'Dism /online /Get-Intl' e vemos 'Idioma da interface do usuário padrão: en-US'.
Iniciamos a partir do pen drive no WinPE, o SO implantado está no disco E. Executamos o comando 'Dism /image:E: /Set-UILang:ru-ru'. Observamos o resultado, executamos 'Dism /image:E: /Get-Intl' e vemos 'Idioma da interface do sistema padrão: ru-RU'.
Entramos no sistema, fazemos login na conta 'User', o multiquiosque não funciona.
Para uma clara fixação da relação de causa e efeito do surgimento do problema, tentaremos mais uma vez fazer o multiquiosque funcionar e não funcionar.
Iniciamos a partir do pen drive no WinPE, o SO implantado está no disco E. Executamos o comando 'Dism /image:E: /Set-UILang:en-us'. Observamos o resultado, executamos 'Dism /image:E: /Get-Intl' e vemos 'Idioma da interface do sistema padrão: en-US'.
Entramos no sistema, fazemos login na conta 'User', o multiquiosque funciona.
Iniciamos a partir do pen drive no WinPE, o SO implantado está no disco E. Executamos o comando 'Dism /image:E: /Set-UILang:ru-ru'. Observamos o resultado, executamos 'Dism /image:E: /Get-Intl' e vemos 'Idioma da interface do sistema padrão: ru-RU'.
Entramos no sistema, fazemos login na conta 'User', o multiquiosque não funciona.
Ou seja, é possível ver uma clara dependência da funcionalidade do quiosque em relação ao valor do idioma da interface do usuário padrão. Poderia haver outros fatores que influenciam a funcionalidade do multiquiosque?
Experimento 6
Para a pureza do experimento, reinstalamos o sistema. Carregamos a imagem do sistema – traduzida para o russo no modo de auditoria.
Executamos 'sysprep' em modo gráfico, selamos o SO com os mesmos parâmetros que no experimento 2. Aguardamos a saudação do SO e respondemos às perguntas: 'Continuar no idioma selecionado?' – 'Inglês (Estados Unidos)'; região – Rússia; layout do teclado – Russo. Em seguida, todos os parâmetros foram escolhidos como no experimento 2.
Observamos os parâmetros do idioma da interface do usuário padrão. Executamos o comando 'Dism /online /Get-Intl' e vemos 'Idioma da interface do sistema padrão: en-US'. Na ferramenta 'Gerenciamento do computador' criamos o usuário 'User', adicionamos o pacote de configuração, fazemos login na conta 'User', o multiquiosque funciona.
Tentamos quebrar o quiosque ao mudar o idioma da interface do usuário padrão. Entramos no usuário 'Test', que foi criado na primeira inicialização do sistema e ativamos o login automático para que o sistema não iniciasse na conta 'User' imediatamente. Executamos 'netplwiz', selecionamos o usuário 'Test', desmarcamos a caixa 'Exigir entrada de nome de usuário e senha' e aplicamos os parâmetros.
Inicializamos a partir do pen drive no WinPE. Executamos o comando «Dism /image:E: /Set-UILang:pt-pt». Verificamos o resultado, executamos «Dism /image:E: /Get-Intl» e vemos «Default system UI language: pt-PT».
Entramos no sistema e tentamos acessar a conta «User», o multiquiosque está funcionando. Ou seja, não conseguimos quebrá-lo. Mas será que podemos fazer ele funcionar dessa forma?
Experimento 7
Carregamos a imagem do sistema – localizada em português no modo de auditoria.
Rodamos «Sysprep.bat», escolhemos a opção 2. Entramos no sistema, na ferramenta «Gerenciamento do Computador» criamos o usuário «User», adicionamos o pacote de preparação, acessamos a conta «User», o multiquiosque não funciona.
Inicializamos a partir do pen drive no WinPE. Executamos o comando «Dism /image:E: /Set-UILang:en-us». Verificamos o resultado, executamos «Dism /image:E: /Get-Intl» e vemos «Default system UI language: en-US».
Entramos no sistema e tentamos acessar a conta «User», o multiquiosque não funciona.
Assim sendo, ao alterar a configuração do idioma da interface do usuário padrão, é possível impactar o funcionamento do multiquiosque apenas quando o sistema está em modo auditoria ou na primeira inicialização após o selamento do sistema. Isso significa que será necessário selar o sistema com um arquivo de resposta que escolha o idioma do sistema como inglês, e depois mudar as configurações do sistema para que a interface seja em português. Não é uma solução muito boa. Talvez o problema possa ser resolvido através da instalação de um pacote de idioma ou da instalação de pacotes de idiomas adicionais?
Experimento 8
Carregamos a imagem do sistema – em inglês, no modo audit.
Conectamos à internet, nas configurações do sistema vamos à seção «Idioma», escolhemos «Adicionar idioma», selecionamos o idioma «Português», clicamos em «Avançar», deixamos as opções de instalação como padrão, clicamos em «Instalar», após a instalação do pacote de idioma reiniciamos o sistema, agora está em português. Desconectamos o sistema da internet, executamos «Sysprep.bat» e escolhemos a opção 2.
Após inicializar o sistema, na ferramenta «Gerenciamento do Computador» criamos o usuário «User», adicionamos o pacote de preparação, acessamos a conta «User», o multiquiosque não funciona.
Experimento 9
Vamos tentar localizar o sistema antes da instalação, em modo offline. Aproveitaremos para dar uma breve introdução sobre a localização do distribuidor.
Pegue um pen drive com a distribuição original limpa – X21-96381. Ele será o disco "E". Para montar as imagens, crio pastas: "c:MountInstall", "c:MountWinre", "c:MountBoot". Pego o pacote de pacotes de localização – X21-87814. E copio dele para a pasta "c:Mount" os pacotes: "Microsoft-Windows-Client-Language-Pack_x86_pt-br.cab", "lp.cab", "WinPE-Setup_pt-br.cab". Abro o console com privilégios de administrador. Acredito que os próximos comandos serão compreensíveis sem comentários.
Comandos de localização
cd c:mount
dism /Mount-Wim /WimFile:e:sourcesinstall.wim /index:1 /MountDir:Installcode
dism /Image:Install /Add-Package /PackagePath:Microsoft-Windows-Client-Language-Pack_x86_pt-br.cabcode
dism /Image:Installcode /Set-AllIntl:pt-br
dism /Image:Install /Set-TimeZone:"Horário Padrão Brasileiro"code
dism /Mount-Wim /WimFile:InstallWindowsSystem32RecoveryWinre.wim /index:1 /MountDir:Winrecode
dism /Image:Winre /Add-Package /PackagePath:lp.cabcode
dism /Image:Winrecode /Set-AllIntl:pt-br
dism /Image:Winre /Set-TimeZone:"Horário Padrão Brasileiro"code
dism /Unmount-Image /MountDir:Winre /Commitcode
dism /Image:Install /Gen-LangINI /distribution:E: /Set-AllIntl:pt-BRcode
dism /image:Install /Set-SetupUILang:PT-br /distribution:E:code
dism /Unmount-Image /MountDir:Install /Commitcode
dism /mount-wim /wimfile:e:sourcesboot.wim /index:1 /mountdir:Bootcode
dism /Image:Boot /Add-Package /PackagePath:lp.cabcode
dism /Image:Bootcode /Set-AllIntl:pt-br
copy e:sourceslang.ini Bootsourceslang.inicode
dism /Unmount-Image /MountDir:Boot /Commitcode
dism /mount-wim /wimfile:e:sourcesboot.wim /index:2 /mountdir:Bootcode
dism /Image:Boot /Add-Package /PackagePath:lp.cabcode
dism /Image:Boot /Add-Package /PackagePath:WinPE-Setup_pt-br.cabcode
dism /Image:Bootcode /Set-AllIntl:pt-br
copy e:sourceslang.ini Bootsourceslang.ini /ycode
dism /Unmount-Image /MountDir:Boot /CommitIniciamos pelo pen drive, escolhemos o idioma português e instalamos o sistema em um disco limpo. Quando o sistema pede para escolher a região, pressionamos "Ctrl+Shift+F3". Na ferramenta "Gerenciamento de Computador", criamos um usuário chamado "User", adicionamos o pacote de preparação e acessamos a conta "User", o modo quiosque não funciona.
Iniciamos pelo pen drive em WinPE. Executamos o comando "Dism /image:E: /Set-UILang:en-us".
Iniciamos no sistema, tentamos acessar a conta "User", o modo quiosque funciona.
Provavelmente o problema não está nos métodos de adição de pacotes, vamos tentar adicionar pacotes adicionais.
Experimento 10
Pegamos o pen drive que preparamos na etapa anterior.
Pegamos o pacote "Feat on Demand" – X21-87815. Copio da pasta "c:Mount" os pacotes: "Microsoft-Windows-LanguageFeatures-Basic-pt-br-Package~31bf3856ad364e35~x86~~.cab", "Microsoft-Windows-LanguageFeatures-OCR-pt-br-Package~31bf3856ad364e35~x86~~.cab", "Microsoft-Windows-LanguageFeatures-Handwriting-pt-br-Package~31bf3856ad364e35~x86~ ~.cab", "Microsoft-Windows-LanguageFeatures-TextToSpeech-pt-br-Package~31bf3856ad364e35~x86~~.cab".
Pegamos o pacote «Feat on Demand RDX Updt» – X21-99781. Na pasta «c:Mount», copio dele os pacotes: «Microsoft-Windows-RetailDemo-OfflineContent-Content-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-RetailDemo-OfflineContent-Content-ru-ru-Package~31bf3856ad364e35~x86~~.cab».
Iniciamos o console com privilégios de administrador e executamos os comandos:
Equipes
cd c:mount
dism /Mount-Wim /WimFile:e:sourcesinstall.wim /index:1 /MountDir:Install
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-Basic-ru-ru-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-OCR-ru-ru-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-Handwriting-ru-ru-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-TextToSpeech-ru-ru-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-RetailDemo-OfflineContent-Content-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-RetailDemo-OfflineContent-Content-ru-ru-Package~31bf3856ad364e35~x86~~.cab
dism /Unmount-Image /MountDir:Install /CommitIniciamos a partir do pen drive, escolhemos o idioma russo e instalamos o sistema em um disco vazio. Quando o sistema pede para escolher a região, pressionamos «Ctrl+Shift+F3». Na ferramenta «Gerenciamento do Computador», criamos um usuário «User», adicionamos o pacote de preparação, acessamos a conta «User». Eu obtive uma tela preta, que ficou travada por muito tempo, então fiz uma reinicialização forçada do sistema.
Removemos o pacote de preparação, entramos como usuário «User», reiniciamos o sistema, adicionamos o pacote de preparação, e o multi-boot não funciona.
Iniciamos pelo pen drive em WinPE. Executamos o comando "Dism /image:E: /Set-UILang:en-us".
Iniciamos no sistema, tentamos acessar a conta "User", o modo quiosque funciona.
Contornando o problema
Heróis normais. Sempre dão um jeito!
Diversos métodos de instalação de pacotes de localização não resolveram o problema, então será necessário, na primeira inicialização após a selagem, instalar o idioma «en-us» e, após a primeira inicialização, alterar as configurações de idioma.
Carregamos a imagem do sistema – localizada em português no modo de auditoria.
No arquivo «Unattend.xml», inserimos «en-US» no parâmetro, executamos «Sysprep.bat», escolhemos a opção 2 e verificamos o que conseguimos. A tela de boas-vindas está em inglês, o multi-boot – funciona. Portanto, precisamos adicionar ao «Unattend.xml» um comando para alterar o idioma de boas-vindas. Para isso, é necessário executar o comando «control intl.cpl,,/f:» com a indicação do arquivo de configuração, que conterá a cópia das configurações atuais para a tela de boas-vindas. O conteúdo do arquivo de configuração será assim.
Como haverá uma cópia das configurações do usuário atual, a execução do comando deve ocorrer após o login do usuário no sistema, portanto, precisaremos. Há um pequeno "porém": a execução será após o login do usuário com privilégios de administrador. E eu não gostaria de criar um arquivo adicional que será necessário para a execução bem-sucedida do comando. Melhor implementar toda a solução em um único arquivo — "Unattend.xml". Para isso, precisaremos executar o comando que cria o arquivo de configuração. Acho que vou criar o arquivo de configuração usando o comando "echo" no ambiente "cmd", mas é necessário escapar os sinais de maior e menor. Ou seja, para criar o arquivo de configuração, o comando fica assim.
echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>^<gs:UserList^>^<gs:User UserID="Current" CopySettingsToSystemAcct="true"/ ^>^</gs:UserList^>^</gs:GlobalizationServices^>>Config.xmlMas precisamos colocar esse comando em um XML, que tem seus próprios requisitos para o uso de caracteres especiais:
Caractere especial
Valor substituto
>
>
<
<
&
&
‘
'
“
"
Assim, para criar o arquivo de configuração, o comando para "FirstLogonCommands" ficou assim.
cmd.exe /c echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>^<gs:UserList^>^<gs:User UserID="Current" CopySettingsToSystemAcct="true"/^>^</gs:UserList^>^</gs:GlobalizationServices^>>"%TMP%Config.xml"Em seguida, executamos o comando usando o arquivo de configuração.
control intl.cpl,,/f:"%TMP%Config.xml"Em seguida, removemos o arquivo criado anteriormente e reiniciamos o sistema, pois as alterações entrarão em vigor após a reinicialização.
cmd.exe /c del "%TMP%Config.xml" /q&shutdown /r /f /t 00No final, obtive um arquivo de respostas para o sysprep.
Unattend.xml
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f
1
Não mostrar a página de chave
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f
2
Não criar conta
cmd.exe /c rd %systemdrive%Sysprep /s /q
3
Excluir Pasta
true
Admin
en-US; pt-BR
pt-BR
en-US
pt-BR
true
true
true
true
true
1
cmd.exe /c echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>^<gs:UserList^>^<gs:User UserID="Current" CopySettingsToSystemAcct="true" / ^>^</gs:UserList^>^</gs:GlobalizationServices^>"%TMP%Config.xml"
CriarConfig
1
control intl.cpl,,/f:"%TMP%Config.xml"
UsarConfig
2
cmd.exe /c del "%TMP%Config.xml" /q&shutdown /r /f /t 00
ExcluirConfig
3Verificando…
Carregamos a imagem do sistema – localizada em português no modo de auditoria.
Substituímos o arquivo Unattend.xml por um novo, executamos "Sysprep.bat", escolhemos a opção 2 e verificamos o que obtivemos. No primeiro carregamento, a tela de boas-vindas está em inglês, o sistema reinicia. A tela de boas-vindas está em português, o modo quiosque está funcionando.
Se você tiver dúvidas sobre a configuração e a licenciamento do Windows 10 IoT Enterprise, entre em contato pelo endereço ou no site .
Respostas para algumas perguntas você pode encontrar na ou no nosso
Autor do artigo: Borisenkov Vladimir, especialista técnico da Quarta Tecnologias.
Fonte: habr.com
