Introduzione
– nome commerciale della nuova versione di Windows 10. Il rilascio di questa versione è stato annunciato a settembre 2018, corrispondente alla versione 1809, 18 – anno, 09 – mese. Sono stati scritti molti articoli sulla nuova versione di Windows 10 1809, ma la maggior parte di essi è dedicata a vari "gadget", "decorazioni" e funzionalità richieste in ambiente domestico.
In questo articolo si parlerà solo delle funzionalità che possono essere rilevanti per i produttori di dispositivi a scopo fisso. In particolare, delle nuove possibilità della modalità "Chiosco". Sarà trattato anche il tema della modifica dei nomi dei piani di assistenza delle edizioni Windows per il segmento aziendale.
Il vecchio schema di assistenza con un nuovo nome
Inizierò con una breve spiegazione: nel segmento aziendale delle edizioni Windows ci sono due schemi di assistenza attraverso i quali Windows riceve aggiornamenti. Gli schemi di assistenza hanno una designazione alfabetica. Attualmente, i canali di assistenza sono chiamati LTSC e SAC.
LTSC – significa (con assistenza a lungo termine). In precedenza, questo canale era chiamato LTSB – Long Term Servicing Branch, Microsoft ha semplicemente cambiato il nome del canale di assistenza, mentre il servizio rimane invariato.
Microsoft ha anche cambiato il nome del ramo di assistenza CBB – Current Branch for Business, ora questo ramo di assistenza è chiamato SAC – . Anche qui è cambiato solo il nome.
Va notato che i rami di assistenza LTSC e SAC utilizzano distribuzioni Windows diverse.
Un po' sul nuovo modo kiosk in SAC
Come ho già detto, le distribuzioni di LTSC e SAC sono diverse. In LTSC non ci sono app universali standard e non c'è il negozio delle app, mentre in SAC sì. Di conseguenza, in LTSC non è presente il browser Edge, mentre in SAC c'è. Se durante la configurazione del chiosco si sceglie il browser Edge, ora ci sono due modalità disponibili:
- Come segnale digitale o display interattivo
- Come browser pubblico
Non mi soffermerò sulla configurazione di queste modalità, in quanto la configurazione è molto semplice e avviene tramite l'interfaccia grafica. Basta creare un utente che non appartiene al gruppo 'Amministratori', attivare per lui la modalità chiosco utilizzando EDGE e osservare il funzionamento di queste modalità.
Chiosco con molte applicazioni
Alcuni pensano che l'uso di licenze implichi il funzionamento di una sola applicazione sul dispositivo, ma in realtà non è così. Il dispositivo deve essere progettato per eseguire un'unica attività aziendale e l'utente non dovrebbe avere accesso al desktop. Ora Microsoft ha fornito uno strumento per utilizzare più applicazioni. Questa modalità si chiama 'multi-app kiosk', che di seguito abbrevierò in 'multikiosk'. In questo articolo vedremo la configurazione di questa modalità tramite un pacchetto di provisioning e alcune peculiarità di questa modalità.
Un po' sulla modalità 'Multikiosk'
Accedendo a un account utente per il quale è stata attivata la modalità chiosco, il sistema funzionerà in modalità tablet. Il menu "Start" verrà esteso a schermo intero, mostrando le tile delle applicazioni.
Elenco delle principali impostazioni e funzionalità della modalità:
- Configurazione per più utenti o gruppi
- A ciascun utente o gruppo possono essere assegnate impostazioni individuali
- Possibilità di utilizzare applicazioni universali e classiche
- Possibilità di avviare automaticamente una delle applicazioni all'accesso dell'utente al sistema
- Funzionamento delle applicazioni secondo lista bianca
- Accesso alle cartelle secondo lista bianca
È importante prestare attenzione al punto 5. Per impostazione predefinita, sarà consentito l'utilizzo solo delle applicazioni necessarie per il funzionamento del sistema; le altre applicazioni devono essere aggiunte all'elenco delle autorizzate. In altre parole, ora non è necessario configurare separatamente AppLocker. A proposito, per evitare conflitti con le impostazioni di AppLocker, in modalità chiosco tutte le regole impostate di AppLocker non avranno effetto.
Nel punto 6 è segnalata una buona opportunità, ma al momento è possibile concedere i diritti di scrittura solo per la cartella «Downloads». La modalità consente di utilizzare applicazioni universali e classiche. Tutte le impostazioni della modalità vengono indicate in un file XML, in cui è possibile specificare anche le impostazioni per il chiosco con un'unica applicazione.
Adesso proviamo a configurare il tutto…
Cosa ci servirà…
- Innanzitutto, ci servirà il sistema stesso che supporta la modalità multi-chiosco. la versione dimostrativa
- Qualsiasi editor XML
- Per applicare le impostazioni del multi-chiosco:
- Per il metodo n. 1 — ICD, che fa parte dell'ADK. L'ADK può essere
- Per il metodo n. 2 – l'utilità PsExec. L'utilità può essere
Ha detto – «Andiamo!»
Condurrò tutte le esperimenti su Windows 10 IoT Enterprise 1809 LTSC x32 versione commerciale, non dimostrativa. Il sistema sarà senza attivazione poiché l'assenza di attivazione non influisce sulla funzionalità del sistema. Ho scelto la versione a 32 bit solo perché occupa meno spazio e lavorare con le immagini di sistema sarà più veloce.
Passo 1 – installazione
L'installazione di Win 10 IoT Enterprise non differisce da quella di Win 10 Enterprise, quindi non descriverò l'intero processo di installazione, ma parlerò di alcuni aspetti importanti.
Per sicurezza, ricordate di non installare il sistema sopra quello già esistente. Quando il programma di installazione chiede dove installare il sistema, eliminate tutte le partizioni sul futuro disco di sistema e indicate un disco non allocato.
Installiamo il sistema senza connessione a Internet, in modo che il sistema non scarichi nulla di indesiderato.
Poiché creeremo un'immagine di sistema e la sigilleremo in modalità audit, possiamo risparmiare un po' di tempo avviando il sistema in modalità audit subito dopo l'installazione. Per fare ciò, quando il sistema vi chiederà di scegliere la regione "Iniziamo con la regione. È corretto?", premete semplicemente "Ctrl+Shift+F3".
Passo 2 – creiamo l'immagine di sistema
Poiché stiamo per mettere alla prova il sistema con diverse nuove configurazioni, non è escluso che qualcosa possa andare storto e sarà necessario ripristinare il sistema allo stato originale. Per un rapido ripristino, è fondamentale creare un'immagine del sistema. L'unica cosa che farò è copiare il "set di strumenti essenziale" – il script e il file delle risposte. Tutti i file sono nella cartella "Sysprep", che copierò nella radice del disco di sistema. Naturalmente, condividerò con voi questo "set di strumenti essenziale".
Sysprep.bat – per sigillare il 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 %AdminName%>nul 2>nul
if %errorLevel% neq 0 (call :AddAdmin "%AdminName%")
if %errorLevel% neq 0 (call :ShowMessage "‡‡‡Ошибка создания новой учетной записи администратора "%AdminName%"‡‡Нажмите любую клавишу для завершения работы скрипта"&pause>nul&exit)
pushd "%~dp0"
cls
call :ShowMessage ‡‡‡‡‡‡‡‡‡‡
echo 1 - Запечатать систему в режиме аудита
echo 2 - Запечатать систему в режиме приветствия
:Select
set /p Choice="Введите номер пункта меню: "
if "%Choice%"=="1" (goto Audit)
if "%Choice%"=="2" (goto OOBE)
echo.&echo Выбрано недопустимое значение.&goto Select
exit
:Audit
call :ShowMessage "‡‡‡‡‡Запечатывание системы в режиме аудита"
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 "‡‡‡‡‡Запечатывание системы в режиме приветствия"
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 Не указано имя пользователя&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 %AdminGroup% %UserName% /add
net localgroup %UserGroup% %UserName% /delete
endlocal&exit /b 0
goto :eof
:GetGroupName
if "%~1"=="" (echo Не указан SID группы&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 Ошибка определения имени группы по 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 :eofAll'avvio, lo script verificherà la presenza dell'account «Admin» e lo creerà se mancante. L'account sarà aggiunto al gruppo «Amministratori».
Unattend.xml – file di risposte per sysprep.
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f
1
Non mostrare la pagina della chiave
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f
2
Non creare un account
cmd.exe /c rd %systemdrive%Sysprep /s /q
3
Elimina la cartella
true
Admin
en-US; it-IT
it-IT
it-IT
it-IT
true
true
true
true
true
1Durante la sigillatura in modalità audit, lo script aggiungerà nel registro il comando per terminare il processo "sysprep.exe" in modo da non dover chiudere la finestra di sysprep manualmente ogni volta. Durante la sigillatura in modalità welcome, lo script rimuoverà dal registro il comando per chiudere la finestra e cambierà automaticamente il valore dell'architettura nel file di risposte con quello attuale. Nel file di risposte sono presenti i parametri per avviare il sistema senza l'intervento dell'utente e il comando per eliminare la cartella "Sysprep" nella radice del disco di sistema.
Adesso sigillerò il sistema in modalità audit utilizzando "Sysprep.bat" e creerò un'immagine del sistema. Userò DISM per creare l'immagine e realizzerò l'immagine solo del volume di sistema. Se stai creando l'immagine solo del volume di sistema, e non dell'intero disco, ricorda di copiare il contenuto della cartella "WindowsSystem32Recovery" nel primo volume nella cartella "RecoveryWindowsRE" dopo aver distribuito il sistema. Questo deve essere fatto prima dell'avvio del sistema operativo poiché, dopo l'avvio, la cartella "WindowsSystem32Recovery" sarà già vuota.
Passo 3 – localizzazione del sistema
È possibile installare il pacchetto linguistico senza connessione a Internet, se si dispone già di questo pacchetto. In caso contrario, il sistema lo scaricherà automaticamente da Internet quando si aggiunge la lingua nelle impostazioni. Assicurati solo di non utilizzare il pacchetto linguistico di versioni precedenti del sistema operativo. Per Windows 10 1809, deve essere il pacchetto linguistico specifico per Windows 10 1809.
Microsoft sta seguendo il suo piano di trasferimento graduale delle impostazioni dal menu classico al nuovo, quindi non troverai già le impostazioni per cambiare la lingua e installare il pacchetto linguistico nel pannello di controllo classico. Queste impostazioni sono ora disponibili solo nelle impostazioni di sistema.
In modalità audit, potresti riscontrare problemi nell'aprire le impostazioni di sistema dal menu "Start". Per aprire le impostazioni di sistema, esegui il comando – "ms-settings:", fai attenzione ai due punti alla fine del comando; senza di essi, il comando non funzionerà. Dopo aver aperto le impostazioni di sistema utilizzando questo comando una sola volta, potrai accedervi anche tramite il menu grafico.
Tuttavia, nelle impostazioni di sistema è possibile installare il pacchetto linguistico se il sistema è connesso a Internet; non è possibile scegliere di installare il pacchetto linguistico da un file locale.
Non descriverò il processo di localizzazione del sistema poiché ciò appesantirebbe significativamente l'articolo, soprattutto perché il processo di localizzazione è descritto in dettaglio . Vorrei però attirare la vostra attenzione su una particolarità nel cambiare la lingua del sistema dopo aver installato il pacchetto linguistico tramite console. Questa particolarità è descritta nella stessa wiki alla quale ho fornito il link in precedenza, nella sezione .
Installerò il pacchetto linguistico senza connessione a Internet.
Dopo una completa localizzazione del sistema, assicurati di creare un'immagine del sistema.
Passo 4 – installazione delle applicazioni necessarie
Poiché nei sistemi LTSB e LTSC non c'è uno store per le applicazioni, l'installazione delle applicazioni da «Microsoft Store» presenta alcune difficoltà, in particolare il download delle applicazioni. Per il download delle applicazioni, l'azienda «Adguard» ha creato un servizio molto utile – , tramite il quale è possibile ottenere link temporanei per il download delle applicazioni e dei loro componenti.
Per installare l'applicazione, avrai bisogno di file con estensioni «Appx» e «AppxBundle». Prima di installare l'applicazione stessa, è necessario installare i suoi componenti. Di solito, i componenti dell'applicazione si possono facilmente riconoscere dal nome del file.
Per non rendere l'articolo troppo lungo, non descriverò dettagliatamente il processo di installazione delle applicazioni, soprattutto perché esiste una . Ma aggiungerò un altro metodo per installare le applicazioni nell'attuale account. Le applicazioni possono essere installate utilizzando il programma , ma per installare le applicazioni è necessaria una connessione a Internet; tuttavia, le applicazioni possono essere installate con un doppio clic del mouse e non sarà necessario scaricare i loro componenti, in quanto tutti i componenti necessari verranno scaricati e installati. .
E un piccolo promemoria: quando si installa un'applicazione nell'attuale account, non sarà possibile sigillare il sistema. Per scoprire come installare le applicazioni in modo da avere la possibilità di sigillare il sistema, consulta la guida menzionata sopra. E per testare il funzionamento del chiosco multimediale, basta avere già le applicazioni esistenti.
Passo 5 – creazione del file di configurazione per il chiosco multimediale
Siamo arrivati alla parte più interessante: la configurazione della modalità chiosco. Diamo un'occhiata a le impostazioni e vediamo. Prima di tutto, abbiamo bisogno di creare un file di configurazione XML, un esempio completo del quale possiamo .
Iniziamo dalla configurazione della disposizione delle piastrelle. Il modo più semplice per creare la configurazione XML delle piastrelle è .
Per prima cosa, aggiungiamo al menu "Start" le piastrelle delle applicazioni di cui abbiamo bisogno. Apriamo la ricerca "Win+s", troviamo l'applicazione desiderata, clicchiamo con il tasto destro e scegliamo "Fissa sulla schermata iniziale".
Ho fissato le seguenti applicazioni:
- Blocco note
- Calcolatrice
- Internet Explorer
- Vernice
- WordPad
- Parametri
- Sicurezza di Windows
Le ultime due applicazioni sono state fissate poiché nella fornitura standard di LTSC non ci sono altre applicazioni universali. Si noti che le tile delle applicazioni classiche rimandano a scorciatoie. Ora, spostando le tile direttamente nel menu «Start», dividerò le tile fissate in due gruppi. Per creare un nuovo gruppo di tile, trascina una tile significativamente più in alto o in basso rispetto alle altre tile; comparirà un delimitatore intuitivo. Puoi nominare i gruppi come preferisci; per farlo, posiziona il cursore del mouse sopra il gruppo e, quando appare la scritta "Dai un nome al gruppo", clicca con il pulsante sinistro del mouse. Nominerò il primo gruppo "Impostazioni", che conterrà le tile "Opzioni" e "Sicurezza di Windows". Il secondo gruppo lo chiamerò "Applicazioni Office", che includerà tutte le altre tile. A proposito, puoi spostare interi gruppi di tile trascinandoli tramite le due barre situate in alto a destra del nome del gruppo.
Poiché il nome non entra completamente nella tile "Sicurezza di Windows", la cambierò in "Larga". Per modificare la dimensione della tile, fai clic con il tasto destro sulla tile e seleziona "Cambia dimensione".
Dopo aver configurato, esportiamo lo stato attuale eseguendo il comando nell'ambiente PowerShell – "Export-StartLayout – path C:SysprepStartLayout.xml".
Successivamente, è più semplice non creare il file di configurazione da solo, ma impostazioni – premiamo il pulsante «Copy», incolliamo il contenuto in un blocco note e salviamo come «MultiAppKiosk.xml». Ora cambiamo le impostazioni secondo le nostre esigenze. Per modificare le impostazioni delle piastre collegate, copiamo l'intero blocco «StartLayoutCollection» da «StartLayout.xml» in «MultiAppKiosk.xml». Per aggiungere applicazioni alle autorizzate, è necessario inserire gli identificatori delle app universali nella sezione «AllowedApps» e in questo stesso blocco aggiungere il percorso completo ai file eseguibili delle applicazioni classiche, indicato nelle proprietà delle scorciatoie a cui si riferiscono le piastre. Per un rapido accesso alla scorciatoia, facendo clic con il tasto destro del mouse sulla piastreta fissata, segui il menu «Ulteriori opzioni > Vai alla posizione del file». Tieni presente che per specificare l'ID dell'app universale si utilizza il parametro «AppUserModelId», mentre per specificare il percorso completo all'applicazione classica si utilizza il parametro «DesktopAppPath». Un ulteriore piccolo dettaglio: se prevedi di utilizzare IE su un sistema x64, nella lista delle applicazioni autorizzate è necessario indicare due percorsi per il file eseguibile «Program FilesInternet Exploreriexplore.exe» e «Program Files (x86)Internet Exploreriexplore.exe».
Non fornirò accesso alle cartelle, quindi rimuovo la sezione «FileExplorerNamespaceRestrictions».
La visualizzazione della barra delle applicazioni non mi disturberà, perciò lascio tutto com'è nella sezione «Taskbar».
Nell'esempio sono definiti due profili, ma ne avrò solo uno, quindi posso rimuovere la sezione con il secondo profilo. Prima di rimuoverla, fai attenzione all'esempio di avvio automatico dell'applicazione con argomenti.
Nella sezione «Configs», gli account sono legati ai profili; nota che a un profilo possono essere associati più account. Tuttavia, poiché mi interessa solo un account, rimuoverò tutti i legami eccetto il primo – i blocchi «Config». Nella legatura rimanente, scriverò il nome utente «User».
Ho ottenuto un file con i seguenti parametri
MultiAppKiosk.xml
<![CDATA[
>
]]>
UtenteQuando crei i tuoi file XML di configurazione, ricorda che ogni profilo deve avere un ID unico, non solo all'interno di un singolo file XML, ma nell'intero sistema operativo. Idealmente, per non confondersi, puoi creare ogni volta un nuovo identificatore, che puoi generare nell'ambiente PowerShell usando il comando «[guid]::NewGuid()». Assicurati di salvare il file in codifica «UTF-8», poiché se il file è salvato in codifica «ANSI», durante la creazione del pacchetto di preparazione otterrai un errore se ci sono caratteri cirillici nel file XML.
Passo 6 – Applicazione delle impostazioni del multi-chiosco
Consideriamo due metodi per applicare le impostazioni descritte nel file di configurazione. Il primo – attraverso un pacchetto di preparazione, che deve essere creato in ICD. Per qualcuno, questo metodo potrebbe risultare più familiare. Il secondo – usando il «MDM Bridge WMI Provider», questo metodo mi è sembrato più comodo.
Metodo n. 1
Chi non ha ICD, e installalo. L'installazione di ADK è molto semplice, puoi mantenere i componenti di default.
Avviamo ICD, clicchiamo sulla tessera "Preparazione Aggiuntiva", indichiamo il nome e la cartella del progetto e facciamo clic su "Avanti". Nella finestra successiva selezioniamo "Tutte le versioni di Windows per desktop" e facciamo clic su "Avanti". Possiamo saltare l'importazione del pacchetto di preparazione e cliccare su "Fine".
Espandiamo il menu a discesa "Opzioni di runtime", poi espandiamo il sottomenu "AssignedAccess" e selezioniamo "MultiAppAssignedAccessSettings". Nella parte superiore della sezione centrale della finestra ICD facciamo clic sul pulsante "Sfoglia" e indichiamo il percorso del file XML con le impostazioni. Per sicurezza, possiamo salvare il progetto premendo "Ctrl+s". Nell'angolo superiore sinistro dell'ICD selezioniamo "Esporta" e nel menu a discesa scegliamo "Pacchetto di preparazione". Come proprietario scegliamo "Amministratore IT"; tutte le altre domande possono essere saltate premendo "Avanti", e alla fine facciamo clic su "Compila" e "Fine".
Nella macchina installata, non dimentichiamo di creare l'utente "User", non può essere aggiunto al gruppo "Amministratori", altrimenti il multi-kiosk non funzionerà. Ho creato l'utente nell'utility "Gestione Computer" con una password a tempo illimitato.
Ora avviamo il pacchetto di preparazione nel sistema precedentemente installato. Dopo l'applicazione del pacchetto di preparazione, cambierà il menu di avvio e per l'amministratore. Nel pannello di sinistra del menu di avvio devono scomparire i pulsanti: «Documenti», «Immagine», «Impostazioni». Se il menu di avvio non è cambiato, qualcosa è andato storto. Il pacchetto installato può essere rimosso aprendo la finestra «Impostazioni > Account > Accesso all'account di lavoro o di istruzione > Aggiunta o rimozione del pacchetto di preparazione».
Se il menu di avvio è cambiato, le impostazioni sono state applicate al sistema, accedi con l'utente per il quale è configurato il multi-chiosco e guarda il risultato.
Metodo n. 2
Applicazione delle impostazioni tramite «MDM Bridge WMI Provider» . La comodità di questo metodo sta nella flessibilità d'uso e nella possibilità di eliminare molte operazioni manuali necessarie per creare un pacchetto di preparazione. Ognuno può trovare la soluzione che è più comoda per sé. Io ho creato un paio di script per me.
MiltiKiosk.bat – script per l'avvio
@echo off
chcp 1251>nul
se non esiste "%~dp0psexec.exe" chiama :ShowMessage "‡‡‡‡‡‡‡‡‡‡‡‡‡Per il funzionamento dello script è necessario il file psexec.exe‡‡Per terminare l'esecuzione dello script premi un tasto qualsiasi"&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 Non sono stati trovati file PS con inizio nome - "%~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 principale
Funzione ConvertEncoding ([string]$From, [string]$To) {
Begin{$encFrom = [System.Text.Encoding]::GetEncoding($From);$encTo = [System.Text.Encoding]::GetEncoding($To)}
Process{$bytes = $encTo.GetBytes($_);$bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes);$encTo.GetString($bytes) -replace [char]0, ''}
}
Funzione ShowMessage ($Message='', $Align=0) {
Try {$Align = [decimal]$Align} Catch {Return 'Per il parametro Align può essere specificato solo un numero' | ConvertEncoding 'windows-1251' -To 'UTF-16'}
if ($Message -is [int]) {for ($i=1; $i -le $Message; $i++) {Write-Host}; Return}
if ([System.Text.Encoding]::Default.WindowsCodePage -eq 1252) {$Message = $Message | ConvertEncoding 'windows-1251' -To 'UTF-16'}
if ($Message -is [string]) {[array] $Message = $Message}
foreach ($String in $Message) {
Try {$String = [int]$String} Catch {}
if ($String -is [int]) {for ($i=1; $i -le $String; $i++) {Write-Host}; continue}
if ($Host.UI.RawUI.BufferSize.Width -gt $String.Length) {
if ($Align -eq 0) {Write-Host $String
} else {Write-Host ("{0}{1}" -f (' ' * (([Math]::Max(0, $Host.UI.RawUI.BufferSize.Width / $Align) - [Math]::Floor($String.Length / $Align)))), $String)}
} else {Write-Host $String}
}
}
$script:NameSpace="rootcimv2mdmdmmap"
$script:ClassName="MDM_AssignedAccess"
$script:MultiAppKiosk = Get-CimInstance -Namespace $NameSpace -ClassName $ClassName
if (-not $MultiAppKiosk) {ShowMessage -Message (3, 'Errore nel recupero dell'oggetto delle impostazioni', 2, 'Premere "Enter" per terminare l'esecuzione dello script') -Align 2; Read-Host; Exit}
Funzione MainMenu() {
ShowMessage (13, ' 0 - Uscita', ' 1 - Selezionare il file XML per l'installazione', ' 2 - Mostrare l'attuale configurazione del multi-kiosk', ' 3 - Rimuovere le impostazioni del multi-kiosk', 1)
$local:PromptText = 'Seleziona un'azione'
if ([System.Text.Encoding]::Default.WindowsCodePage -eq 1252) {$PromptText = $PromptText | ConvertEncoding 'windows-1251' -To 'UTF-16'}
$local:Selections = 1..2
While ($true) {
$Select = Read-Host -Prompt $PromptText
Switch ($Select) {
0 {exit}
1 {XMLSelection}
2 {ShowMessage -Message (1, 'Inizio configurazione') -Align 2; Write-Host $MultiAppKiosk.Configuration; ShowMessage -Message ('Fine configurazione', 1, 'Per tornare al menu premere "Enter"', 1) -Align 2; Read-Host}
3 {$MultiAppKiosk.Configuration = $Null; Set-CimInstance -CimInstance $MultiAppKiosk; ShowMessage -Message (1, 'Comando di rimozione delle impostazioni eseguito', 1) -Align 2}
DEFAULT {ShowMessage 'Valore selezionato non valido'}
}
if ($Selections -contains $Select) {Clear-Host; ShowMessage (15, ' 0 - Uscita', ' 1 - Selezionare il file XML per l'installazione', ' 2 - Mostrare l'attuale configurazione del multi-kiosk', ' 3 - Rimuovere le impostazioni del multi-kiosk', 1)}
}
}
Funzione XMLSelection() {
Clear-Host
if (!(Test-Path -Path $PSScriptRoot'XML')) {ShowMessage -Message (13, 'Cartella non trovata', $('"'+$PSScriptRoot+'XML"'), 1, 'Premere "Enter" per tornare al menu precedente') -Align 2; Read-Host; Return}
$local:XMLList = @()
$XMLList += Get-ChildItem -Path $PSScriptRoot'XML' -name -filter '*.xml'
if ($XMLList.Count -eq 0) {ShowMessage -Message (13, 'Nessun file XML trovato nella cartella', $('"'+$PSScriptRoot+'XML"'), 1, 'Premere "Enter" per tornare al menu precedente') -Align 2; Read-Host; Return}
[int]$local:Indent = 13 - $XMLList.Count / 2; if ($Indent -lt 1) {$Indent = 1}
ShowMessage ($Indent, ' 0 - Tornare al menu precedente')
for ($i=0; $i -le $XMLList.GetUpperBound(0); $i++) {Write-Host $(' '+($i+1)+' - '+$XMLList[$i])}
Write-Host
$local:PromptText = 'Seleziona il file da installare'
if ([System.Text.Encoding]::Default.WindowsCodePage -eq 1252) {$PromptText = $PromptText | ConvertEncoding 'windows-1251' -To 'UTF-16'}
$local:Selections = 1..$XMLList.Count
$local:BackToPrevMenu = 0
While ($BackToPrevMenu -eq 0) {
$Select = Read-Host -Prompt $PromptText
Switch ($Select) {
0 {$BackToPrevMenu = 1}
{$Selections -contains $Select} {ShowMessage $('Comando per applicare le impostazioni dal file '+$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 ('Valore selezionato non valido')}
}
}
}
MainMenuSe desideri utilizzare la mia soluzione, salva nella stessa cartella gli script sopra menzionati con i loro nomi originali e posiziona anche il file «PsExec.exe» in questa cartella. All'interno di questa cartella, crea una cartella «XML» e copia al suo interno i file XML per configurare il multichiosco. Userò lo stesso file utilizzato nel primo metodo.
MultiAppKiosk.xml
<![CDATA[
>
]]>
UtenteUn po' di informazioni sulle caratteristiche dello script. Lo script è progettato per utilizzare file XML codificati in «UTF8»; se desideri utilizzare la codifica «ANSI», rimuovi il parametro «encoding UTF8» dalla lettura del file. Nella cartella «XML» devono essere collocati i file XML senza sostituzione dei caratteri, lo script sostituirà automaticamente i caratteri speciali con le corrispondenti designazioni. Per non confondersi con i GUID legati agli utenti nei profili, puoi semplicemente indicare il numero o il nome utente tra parentesi graffe; tutto il contenuto tra parentesi graffe sarà sostituito dai GUID.
Usare lo script è molto semplice, avvialo e seleziona l'opzione necessaria. Per modificare la configurazione corrente a una nuova non è necessario eliminare quella attuale; verrà sovrascritta. Non dimenticare di creare gli utenti indicati nel file di configurazione.
Durante la visualizzazione della configurazione attuale del chiosco multimediale nella stessa sessione in cui è stata applicata, le combinazioni di caratteri sostitutivi verranno visualizzate invece dei caratteri speciali. Dopo il cambio di sessione (riavvio dello script), tutti i caratteri speciali verranno visualizzati nella loro forma originale.
Passo 7 – sigillare il sistema
Il chiosco multimediale funziona, ma sembra sia tutto…
Se tutto procede come previsto, significa che non state notando qualcosa.
Ricordiamoci che dobbiamo ancora passare il sistema dalla modalità audit alla modalità di benvenuto. Ma siamo pronti, avviamo 'Sysprep.bat', scegliamo l'opzione 2, il sistema si sigilla. Accendiamo il dispositivo, il sistema si avvia, accediamo all'account utente per il quale è configurato il chiosco multimediale e non riusciamo ad accedere. Dopo la scritta 'Benvenuto' appare la scritta 'Uscita dal sistema'.
Inizialmente volevo descrivere solo la soluzione al problema, ma poi ho deciso di descrivere i passaggi per identificare il problema e cercare la soluzione più semplice, poiché sicuramente molti lettori avranno dubbi – «E se fosse in questo modo…». Penso che descrivere vari esperimenti possa farvi risparmiare una notevole quantità di tempo nel caso vogliate cercare una soluzione alternativa. Affinché le informazioni siano il più accurate possibile e per assicurarci nuovamente che non ci siano errori, descriverò gli esperimenti nel formato «fatto – registrato». Cioè, rifarò gli esperimenti descritti.
Esperimenti
Cosa abbiamo ottenuto. Nel sistema ci sono due account:
«Admin» – nel gruppo «Amministratori»
«User» – nel gruppo «Utenti»
In modalità audit, il multichannel ha funzionato, dopo la registrazione – non funziona.
Esperimento 1
Rimuoviamo il pacchetto di preparazione installato, nell'apposita console "Gestione Computer" rimuoviamo l'utente "User" e creiamo un nuovo utente di nome "User", applichiamo il pacchetto di preparazione, accediamo all'account "User" – non funziona. Accediamo con il nome "Admin", rimuoviamo l'utente "User" dal gruppo "Utenti", aggiungiamo al gruppo "Amministratori", accediamo con il nome "User" – non funziona. Accediamo con il nome "Admin", rimuoviamo il pacchetto di preparazione con il chiosco multiplo, accediamo con il nome "User" – siamo riusciti a entrare, ma naturalmente la modalità chiosco multiplo non funziona poiché il pacchetto di preparazione è stato rimosso.
Esperimento 2
Carichiamo l'immagine del sistema – localizzata in modalità audit.
Il sistema operativo si è avviato, premiamo «Win+r», poiché la finestra di sysprep si è chiusa automaticamente, eseguiamo il comando «sysprep», nella finestra aperta avviamo «sysprep». Le impostazioni di sysprep nella finestra: «Passa alla schermata di benvenuto del sistema (OOBE)», «Preparazione all'uso», «Riavvio». Clicchiamo «OK» e aspettiamo il messaggio di benvenuto del sistema operativo. Rispondiamo alle domande durante il primo avvio del sistema: «Continuare nella lingua selezionata?» – «russo»; regione – Russia; layout della tastiera – Russo; aggiungere un secondo layout della tastiera – salta; «Colleghiamoci alla rete» – «Salta per ora»; connettiti a Internet – no; accordo di licenza – accetta; «Chi userà questo computer?» – «Test»; creazione di una password – lascio il campo vuoto; lavoro comodo su diversi dispositivi – no; impostazioni sulla privacy – accetta. Il sistema operativo si è caricato, nell'applicazione «Gestione computer» creiamo un utente con nome «User», aggiungiamo il pacchetto di preparazione. Risultato – non funziona.
Esperimento 3
Carichiamo l'immagine del sistema – localizzata in modalità audit.
Il sistema operativo si è avviato, colleghiamo il sistema a Internet, eseguiamo il comando «gpedit.msc» e nella sezione «Centro aggiornamenti di Windows» attiviamo l'opzione «Attivare gli aggiornamenti consigliati tramite aggiornamento automatico», per sicurezza riavviamo. Nella centro aggiornamenti facciamo clic su «Controlla aggiornamenti» e riavviamo finché non sono installati tutti gli aggiornamenti. Disconnettiamo il sistema da Internet. Avviamo «sysprep» in modalità grafica e ripetiamo tutte le azioni descritte nel passo precedente con l'avvio dell'utilità «sysprep» fino all'aggiunta del pacchetto di preparazione. Risultato – non funziona.
Esperimento 4
Carichiamo l'immagine del sistema – in lingua inglese in modalità audit.
Avviamo «sysprep» in modalità grafica, sigilliamo il sistema operativo con le stesse impostazioni usate durante l'esperimento 2. Al primo avvio del sistema, selezioniamo le stesse impostazioni di quelle usate nell'esperimento 2, ad eccezione delle impostazioni regionali e linguistiche, poiché non è disponibile la lingua russa. Creiamo allo stesso modo un utente «User» e aggiungiamo il pacchetto di preparazione. Risultato – funziona. Cioè, il problema è legato alla localizzazione.
Esperimento 5
Carichiamo l'immagine del sistema – localizzata in modalità audit.
Nell'utility 'Gestione computer' creiamo l'utente 'User', aggiungiamo il pacchetto di preparazione, accediamo all'account 'User', multiconsolo funziona.
Usciamo dall'account e accediamo con l'account 'Admin'. Avviamo PowerShell con diritti di amministratore, eseguiamo il comando 'Dism /online /Get-Intl' e vediamo 'Lingua dell'interfaccia utente predefinita: en-US'.
Ripartiamo dalla chiavetta USB in WinPE, il sistema operativo installato è sul mio disco E. Eseguiamo il comando 'Dism /image:E: /Set-UILang:ru-ru'. Controlliamo il risultato, eseguiamo 'Dism /image:E: /Get-Intl' e vediamo 'Lingua dell'interfaccia utente di sistema predefinita: ru-RU'.
Accediamo al sistema, entriamo nell'account 'User', multiconsolo non funziona.
Per una chiara registrazione del nesso di causa ed effetto della comparsa del problema, proviamo ancora una volta a rendere multiconsolo funzionante e non funzionante.
Ripartiamo dalla chiavetta USB in WinPE, il sistema operativo installato è sul mio disco E. Eseguiamo il comando 'Dism /image:E: /Set-UILang:en-us'. Controlliamo il risultato, eseguiamo 'Dism /image:E: /Get-Intl' e vediamo 'Lingua dell'interfaccia utente di sistema predefinita: en-US'.
Accediamo al sistema, entriamo nell'account 'User', multiconsolo funziona.
Ripartiamo dalla chiavetta USB in WinPE, il sistema operativo installato è sul mio disco E. Eseguiamo il comando 'Dism /image:E: /Set-UILang:ru-ru'. Controlliamo il risultato, eseguiamo 'Dism /image:E: /Get-Intl' e vediamo 'Lingua dell'interfaccia utente di sistema predefinita: ru-RU'.
Accediamo al sistema, entriamo nell'account 'User', multiconsolo non funziona.
Cioè, si può osservare una chiara dipendenza tra il funzionamento del chiosco e il valore della lingua dell'interfaccia utente predefinita. Ci sono altri fattori che influenzano il funzionamento del multi-chiosco?
Esperimento 6
Per la correttezza dell'esperimento, reinstalliamo il sistema. Carichiamo l'immagine del sistema – localizzata in modalità audit.
Avviamo 'sysprep' in modalità grafica, sigilliamo il sistema operativo con gli stessi parametri utilizzati nell'esperimento 2. Attendiamo il saluto del sistema operativo e rispondiamo alle domande: 'Continuare nella lingua selezionata?' – 'English (United States)'; regione – Russia; layout tastiera – Russo. Tutti i parametri sono stati selezionati come nell'esperimento 2.
Controlliamo i parametri della lingua dell'interfaccia utente predefinita. Eseguiamo il comando 'Dism /online /Get-Intl' e vediamo 'Default system UI language: en-US'. Nella console 'Gestione computer' creiamo un utente 'User', aggiungiamo il pacchetto di preparazione, accediamo all'account 'User', il multi-chiosco funziona.
Provando a compromettere il chiosco modificando la lingua dell'interfaccia utente predefinita. Accediamo all'utente "Test", creato durante il primo avvio del sistema, e attiviamo l'accesso automatico in modo che il sistema non si acceda immediatamente all'account "User". Eseguiamo "netplwiz", selezioniamo l'utente "Test", deselezioniamo l'opzione "Richiedi immissione del nome utente e della password" e applichiamo le impostazioni.
Avviamo da USB in WinPE. Eseguiamo il comando "Dism /image:E: /Set-UILang:ru-ru". Controlliamo il risultato, eseguiamo "Dism /image:E: /Get-Intl" e vediamo "Lingua dell'interfaccia utente predefinita: ru-RU".
Accediamo al sistema, tentiamo di entrare nell'account "User", il chiosco multimediale funziona. Cioè, non riesce a essere compromesso. Ma è possibile costringerlo a funzionare in questo modo?
Esperimento 7
Carichiamo l'immagine del sistema – localizzata in modalità audit.
Eseguiamo "Sysprep.bat", selezioniamo l'opzione 2. Accediamo al sistema, nella console "Gestione computer" creiamo un utente "User", aggiungiamo il pacchetto di preparazione, accediamo all'account "User", il chiosco multimediale non funziona.
Avviamo da USB in WinPE. Eseguiamo il comando "Dism /image:E: /Set-UILang:en-us". Controlliamo il risultato, eseguiamo "Dism /image:E: /Get-Intl" e vediamo "Lingua dell'interfaccia utente predefinita: en-US".
Accediamo al sistema, stiamo tentando di entrare nell'account «User», il chiosco multimediale non funziona.
Si scopre che modificando l'impostazione della lingua dell'interfaccia utente predefinita si può influenzare il funzionamento del chiosco multimediale solo quando il sistema è in modalità audit o al primo avvio dopo l'imballaggio del sistema. Questo significa che sarà necessario imballare il sistema con un file di risposta in cui la lingua di sistema è impostata su inglese, e successivamente modificare le impostazioni del sistema affinché l'interfaccia sia in russo. Non è una soluzione molto efficiente. Forse il problema potrebbe essere risolto installando un pacchetto linguistico o ulteriori pacchetti di lingue?
Esperimento 8
Carichiamo l'immagine del sistema – in lingua inglese in modalità audit.
Ci connettiamo a Internet, nelle impostazioni di sistema andiamo alla sezione «Language», selezioniamo «Add language», scegliamo la lingua «Русский», clicchiamo «Next», lasciamo le impostazioni di installazione predefinite, clicchiamo «Install», dopo l'installazione del pacchetto linguistico riavviamo il sistema, ora è in russo. Disconnettiamo il sistema da Internet, eseguiamo «Sysprep.bat», scegliamo l'opzione 2.
Dopo aver avviato il sistema nell'app "Gestione computer", creiamo un utente "User", aggiungiamo il pacchetto di preparazione, accediamo all'account "User", il multi-boot non funziona.
Esperimento 9
Proveremo a localizzare il sistema prima dell'installazione, in modalità offline. Sarà anche una breve introduzione alla localizzazione della distribuzione.
Prendo una chiavetta USB con la distribuzione originale pulita – X21-96381. Sarà il disco "E". Per montare le immagini creo le cartelle: "c:MountInstall", "c:MountWinre", "c:MountBoot". Prendo un pacchetto di localizzazione – X21-87814. E nella cartella "c:Mount" copio da esso i pacchetti: "Microsoft-Windows-Client-Language-Pack_x86_ru-ru.cab", "lp.cab", "WinPE-Setup_ru-ru.cab". Avvio il terminale con diritti di amministratore. Penso che i comandi successivi saranno comprensibili senza commenti.
Comandi di localizzazione
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_it-it.cabcode
dism /Image:Installcode /Set-AllIntl:it-it
dism /Image:Install /Set-TimeZone:"Fuso orario standard russo"code
dism /Mount-Wim /WimFile:InstallWindowsSystem32RecoveryWinre.wim /index:1 /MountDir:Winrecode
dism /Image:Winre /Add-Package /PackagePath:lp.cabcode
dism /Image:Winrecode /Set-AllIntl:it-it
dism /Image:Winre /Set-TimeZone:"Fuso orario standard russo"code
dism /Unmount-Image /MountDir:Winre /Commitcode
dism /Image:Install /Gen-LangINI /distribution:E: /Set-AllIntl:it-ITcode
dism /image:Install /Set-SetupUILang:IT-it /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:it-it
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_it-it.cabcode
dism /Image:Bootcode /Set-AllIntl:it-it
copy e:sourceslang.ini Bootsourceslang.ini /ycode
dism /Unmount-Image /MountDir:Boot /CommitAvviamo da USB, selezioniamo la lingua italiana e installiamo il sistema su un disco pulito. Quando il sistema chiede di scegliere la regione, premiamo «Ctrl+Shift+F3». Nella console «Gestione computer» creiamo l'utente «User», aggiungiamo il pacchetto di preparazione, accediamo all'account «User», il multicluster non funziona.
Avviamo da USB in WinPE. Eseguiamo il comando «Dism /image:E: /Set-UILang:en-us».
Accediamo al sistema e tentiamo di entrare nell'account «User», il multiscan funziona.
Sembra che il problema non sia nei metodi di aggiunta del pacchetto, proviamo ad aggiungere pacchetti aggiuntivi.
Esperimento 10
Prendiamo la chiavetta USB che abbiamo preparato nel passo precedente.
Prendiamo il pacchetto «Feat on Demand» – X21-87815. Nella cartella «c:Mount» copio da esso i pacchetti: «Microsoft-Windows-LanguageFeatures-Basic-ru-ru-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-OCR-ru-ru-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-Handwriting-ru-ru-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-TextToSpeech-ru-ru-Package~31bf3856ad364e35~x86~~.cab».
Prendiamo il pacchetto «Feat on Demand RDX Updt» – X21-99781. Nella cartella «c:Mount» copio da esso i pacchetti: «Microsoft-Windows-RetailDemo-OfflineContent-Content-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-RetailDemo-OfflineContent-Content-ru-ru-Package~31bf3856ad364e35~x86~~.cab».
Avviamo il console con diritti di amministratore ed eseguiamo i comandi:
Comandi
cd c:mount
dism /Mount-Wim /WimFile:e:sourcesinstall.wim /index:1 /MountDir:Install
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-Basic-it-it-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-OCR-it-it-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-Handwriting-it-it-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-TextToSpeech-it-it-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-it-it-Package~31bf3856ad364e35~x86~~.cab
dism /Unmount-Image /MountDir:Install /CommitAvviamo dal flash drive, selezioniamo la lingua italiana e installiamo il sistema su un disco pulito. Quando il sistema chiede di selezionare la regione, premiamo «Ctrl+Shift+F3». Nella console «Gestione computer» creiamo l'utente «User», aggiungiamo il pacchetto di preparazione, accediamo all'account «User». Ho ottenuto uno schermo nero che è rimasto bloccato a lungo, quindi ho eseguito un riavvio forzato del sistema.
Rimuoviamo il pacchetto di preparazione, accediamo come utente «User», riavviamo il sistema, aggiungiamo il pacchetto di preparazione, il multimediakiosk non funziona.
Avviamo da USB in WinPE. Eseguiamo il comando «Dism /image:E: /Set-UILang:en-us».
Accediamo al sistema e tentiamo di entrare nell'account «User», il multiscan funziona.
Soluzione al problema
Eroi normali. Vanno sempre per vie traverse!
Diverse metodi di installazione dei pacchetti di localizzazione non hanno risolto il problema, quindi sarà necessario impostare la lingua "en-us" al primo avvio dopo il sigillo e poi modificare le impostazioni linguistiche dopo il primo avvio.
Carichiamo l'immagine del sistema – localizzata in modalità audit.
Nel file "Unattend.xml" impostiamo il parametro su "en-US", eseguiamo "Sysprep.bat", selezioniamo l'opzione 2 e vediamo cosa abbiamo ottenuto. La schermata di benvenuto è in inglese, l'animazione funziona. Quindi, è necessario aggiungere nel "Unattend.xml" un comando per cambiare la lingua di benvenuto. Per fare ciò, è necessario eseguire il comando "control intl.cpl,,/f:" indicando il file di configurazione, in cui saranno scritte le impostazioni correnti per la schermata di benvenuto. Il contenuto del file di configurazione sarà simile a questo.
Poiché verranno copiati i settaggi dell'utente attuale, il comando deve essere eseguito dopo l'accesso dell'utente al sistema, il che significa che sarà necessario. C'è però un piccolo "ma", l'esecuzione avverrà dopo l'accesso dell'utente con diritti di amministratore. E non mi piacerebbe creare un file aggiuntivo necessario per l'esecuzione del comando. È meglio implementare tutta la soluzione in un unico file – "Unattend.xml". Per fare ciò, sarà sufficiente eseguire il comando che crea il file di configurazione. Penso di creare il file di configurazione utilizzando il comando "echo" nell'ambiente "cmd", ma in quello bisogna eseguire l'escaping delle parentesi angolari con l'accento circonflesso. Quindi, per creare il file di configurazione, si ottiene il seguente comando.
echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>^<gs:UserList^>^<gs:User UserID="Current" CopySettingsToSystemAcct="true"/^>^</gs:UserList^>^</gs:GlobalizationServices^>>Config.xmlTuttavia, dobbiamo inserire questo comando in un XML, che ha requisiti specifici per l'uso dei caratteri speciali:
Carattere speciale
Valore sostitutivo
>
>
<
<
&
&
‘
'
“
"
Alla fine, la seguente comando è stata creata per il file di configurazione «FirstLogonCommands».
cmd.exe /c echo "%TMP%Config.xml"Successivamente, eseguiamo il comando utilizzando il file di configurazione.
control intl.cpl,,/f:"%TMP%Config.xml"Dopo, eliminiamo il file precedentemente creato e riavviamo il sistema poiché le modifiche entreranno in vigore dopo il riavvio.
cmd.exe /c del "%TMP%Config.xml" /q&shutdown /r /f /t 00Alla fine, ho ottenuto il seguente file di risposte per sysprep.
Unattend.xml
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f
1
Non mostrare la pagina della chiave
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f
2
Non creare un account
cmd.exe /c rd %systemdrive%Sysprep /s /q
3
Elimina la cartella
true
Admin
en-US; ru-RU
ru-RU
en-US
ru-RU
true
true
true
true
true
1
cmd.exe /c echo ^^^^^"%TMP%Config.xml"
CreaConfig
1
control intl.cpl,,/f:"%TMP%Config.xml"
UtilizzaConfig
2
cmd.exe /c del "%TMP%Config.xml" /q&shutdown /r /f /t 00
EliminaConfig
3Controlliamo…
Carichiamo l'immagine del sistema – localizzata in modalità audit.
Sostituiamo il file Unattend.xml con uno nuovo, lanciamo «Sysprep.bat», selezioniamo l'opzione 2 e vediamo cosa abbiamo ottenuto. Al primo avvio, la schermata di benvenuto è in inglese, il sistema si riavvia. La schermata di benvenuto è in russo, il multi-kiosk funziona.
Se avete domande sulla configurazione e sulla licenza di Windows 10 IoT Enterprise, contattateci all'indirizzo o sul sito .
Alcune risposte alle domande possono essere trovate nella o nel nostro
Autore dell'articolo: Borisenkov Vladimir, esperto tecnico dell'azienda Quarta Tecnologie.
Fonte: habr.com
