Windows 10 IoT Enterprise 2019 — modalità multiservizio

Introduzione

Windows 10 IoT Enterprise 2019 – il nome di marketing della versione successiva di Windows 10. L'uscita di questa versione è stata annunciata a settembre 2018, quindi ha la 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 diversi "ornamenti", "bellezze" e funzionalità varie, richieste in ambienti domestici.
In questo articolo parleremo solo delle funzionalità che possono essere richieste dai produttori di dispositivi a scopo fisso. In particolare, delle nuove possibilità della modalità "Chiosco". Sarà anche trattato il tema della modifica dei nomi dei piani di assistenza delle edizioni Windows per il segmento aziendale.

Il vecchio piano di assistenza con un nuovo nome

Comincerò con una piccola spiegazione, nel segmento aziendale delle edizioni di Windows ci sono due piani di assistenza, in base ai quali Windows riceve aggiornamenti. I piani di assistenza hanno una designazione alfabetica. Ora i rami di assistenza sono chiamati LTSC e SAC.

LTSC – significa Long Term Servicing Channel (con assistenza a lungo termine). In precedenza, questo canale era denominato LTSB – Long Term Servicing Branch, Microsoft ha semplicemente cambiato il nome del canale di assistenza, mentre l'assistenza è rimasta la stessa.

Inoltre, Microsoft ha cambiato il nome del ramo di assistenza CBB – Current Branch for Business, ora questo ramo di assistenza è chiamato SAC – Semi-Annual Channel. Ancora una volta, è cambiato solo il nome.

È importante notare che per i rami di assistenza LTSC e SAC vengono utilizzati diversi pacchetti di Windows.

Un po' sulla nuova modalità chiosco in SAC

Come ho già detto, LTSC e SAC utilizzano diversi pacchetti. In LTSC non ci sono app universali standard e negozio di app, mentre in SAC ci sono. Di conseguenza, in LTSC non c'è il browser Edge, mentre in SAC c'è. Se durante la configurazione del chiosco si sceglie il browser Edge, ci sono ora due modalità di accesso:

  1. Come segnale digitale o display interattivo
  2. Come browser pubblico

Non mi soffermerò sulla configurazione di queste modalità, poiché la configurazione è molto semplice e viene eseguita nell'interfaccia grafica. Bastano pochi passaggi: creare un utente che non appartenga 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 licenziato di Windows 10 IoT Enterprise significa che può funzionare solo un'applicazione sul dispositivo, ma in realtà non è così. Il dispositivo deve essere progettato per eseguire un'unica attività aziendale e l'utente non deve avere accesso al desktop. Ora Microsoft ha fornito uno strumento per utilizzare più applicazioni. Questa modalità è chiamata "multi-app kiosk", e per brevità la chiamerò "multikiosk". In questo articolo vedremo come configurare questa modalità tramite un pacchetto di provisioning e alcune caratteristiche di questa modalità.

Un po' sulla modalità "Multikiosk"

Quando si accede all'account utente per cui è impostata la modalità multikiosk, il sistema funzionerà in modalità tablet. Il menu "Start" verrà esteso a schermo intero, in cui verranno visualizzate le tile delle applicazioni.

Elenco delle principali impostazioni e funzionalità della modalità:

  1. Configurazione per più utenti o gruppi
  2. A ogni utente o gruppo possono essere assegnate impostazioni individuali
  3. Possibilità di utilizzare app universali e classiche
  4. Possibilità di avviare automaticamente una delle applicazioni al momento dell'accesso dell'utente
  5. Funzionamento delle applicazioni secondo una lista bianca
  6. Accesso alle cartelle secondo una lista bianca

Si noti il punto 5. Per impostazione predefinita, sarà consentito solo il funzionamento delle applicazioni necessarie per il sistema; le altre applicazioni devono essere aggiunte all'elenco delle autorizzazioni. Cioè, ora non è necessario configurare separatamente AppLocker. A proposito, per evitare conflitti con le impostazioni di AppLocker, nella modalità multikiosk tutte le regole configurate di AppLocker non saranno operative.

Nel punto 6 è indicata una buona opportunità, ma al momento è possibile concedere autorizzazioni per la scrittura solo per la cartella "Downloads". La modalità consente di utilizzare app universali e classiche. Tutte le impostazioni della modalità sono specificate in un file XML, nel quale è possibile anche specificare le impostazioni per un chiosco con un'applicazione.

E ora proviamo a configurare tutto questo...

Cosa ci servirà...

  1. Prima di tutto, abbiamo bisogno del sistema stesso, che supporti la modalità multikiosk. Qui puoi scaricare la versione di prova
  2. Guida alla configurazione del multikiosk
  3. Qualsiasi editor XML
  4. Per applicare le impostazioni del multikiosk:
    1. Per il metodo n. 1 - ICD, che è parte di ADK. ADK può scaricarlo qui
    2. Per il metodo n. 2 - lo strumento PsExec. Lo strumento può scaricarlo qui

Ha detto - «Andiamo!»

Condurrò tutti gli esperimenti su Windows 10 IoT Enterprise 1809 LTSC x32 versione commerciale e non dimostrativa. Il sistema sarà senza attivazione poiché la mancanza di attivazione non influisce sulle funzionalità del sistema. Ho scelto 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 è diversa dall'installazione di Win 10 Enterprise, quindi non descriverò l'intero processo di installazione, menzionerò solo alcuni aspetti.

Per sicurezza, ricordo di non installare il sistema sopra quello già installato. Quando l'installatore chiederà dove installare il sistema, eliminate tutte le partizioni sul futuro disco di sistema e indicate un disco non partizionato.

Installa il sistema senza connessione a Internet, in modo che il sistema non scarichi nulla di indesiderato.

Poiché creeremo immagini di sistema e la sigilleremo in modalità audit, possiamo risparmiare un po' di tempo avviando il sistema in modalità audit subito dopo l'installazione. A questo scopo, quando il sistema chiederà di scegliere la regione «Iniziamo con la regione. È corretto?» premi semplicemente «Ctrl+Shift+F3».

Passo 2 - creiamo l'immagine del sistema

Poiché ci divertiremo a sperimentare varie nuove impostazioni, non è escluso che qualcosa non vada per il verso giusto e sia necessario ripristinare il sistema allo stato originale. E per un rapido ripristino allo stato originale, è necessario creare un'immagine del sistema. L'unica cosa che farò è copiare il «set di strumenti da gentiluomo» - script e file di risposta. Tutti i file si trovano nella cartella «Sysprep», che copierò nella radice del disco di sistema. E naturalmente, condividerò con voi questo «set di strumenti da gentiluomo».

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 minName%>nul 2>nul
if %errorLevel% neq 0 (call :AddAdmin "minName%")
if %errorLevel% neq 0 (call :ShowMessage "‡‡‡Errore nella creazione di un nuovo account amministratore "minName%"‡‡Premere un tasto per terminare lo script"&pause>nul&exit)

pushd "%~dp0"

cls
call :ShowMessage ‡‡‡‡‡‡‡‡‡‡
echo 1 - Imprigionare il sistema in modalità audit
echo 2 - Imprigionare il sistema in modalità welcome
:Select
set /p Choice="Inserisci il numero del menu: "
if "%Choice%"=="1" (goto Audit)
if "%Choice%"=="2" (goto OOBE)
echo.&echo Valore non valido selezionato.&goto Select

exit

:Audit
 call :ShowMessage "‡‡‡‡‡Imprigionamento del sistema in modalità audit"
 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 "‡‡‡‡‡Imprigionamento del sistema in modalità welcome"
 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 utente non specificato&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 gruppo non specificato&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 Errore nel determinare il nome del gruppo tramite 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 :eof

All'avvio dello script, verrà verificata l'esistenza dell'account 'Admin' e, in mancanza, verrà creato. L'account verrà aggiunto al gruppo 'Amministratori'.

Unattend.xml – file di risposta 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 cartella
                
            
        
        
            
                true
                Admin
            
        
    
    
        
            en-US; ru-RU
            ru-RU
            ru-RU
            
            ru-RU
        
        
            
                true
                true
                true
                true
                true
                1

Quando si esegue la sigillatura in modalità audit, lo script aggiungerà nel registro il comando per terminare il processo "sysprep.exe" in modo da non dover chiudere manualmente la finestra di sysprep ogni volta. Quando si esegue la sigillatura in modalità welcome, lo script rimuoverà dal registro il comando per chiudere la finestra e cambierà il valore dell'architettura nel file di risposta con quello attuale. Nel file di risposta sono contenuti i parametri per il caricamento del sistema senza l'intervento dell'utente e il comando per eliminare la cartella "Sysprep" nella radice del disco di sistema.

Ora sigillerò il sistema in modalità audit utilizzando "Sysprep.bat" e creerò un'immagine di sistema. Creerò l'immagine di sistema utilizzando DISM e realizzerò l'immagine solo del volume di sistema. Se realizzi solo l'immagine del volume di sistema e non dell'intero disco, non dimenticare di copiare il contenuto della cartella "WindowsSystem32Recovery" nel primo volume nella cartella "RecoveryWindowsRE" dopo aver distribuito il sistema. Questo deve essere fatto prima del caricamento del sistema operativo poiché dopo il caricamento la cartella "WindowsSystem32Recovery" sarà già vuota.

Passo 3 – localizzazione del sistema

Il pacchetto linguistico può essere installato senza connessione a Internet, se lo si possiede già. In caso contrario, il sistema lo scaricherà automaticamente da Internet quando aggiungi la lingua nelle impostazioni. Assicurati solo di non utilizzare il pacchetto linguistico delle versioni precedenti del sistema operativo. Per Windows 10 1809 deve esserci il pacchetto linguistico specifico per Windows 10 1809.

Microsoft sta seguendo il suo piano - la transizione graduale delle impostazioni dal menu classico al nuovo, quindi nel Pannello di controllo classico non troverai più le impostazioni per cambiare lingua e installare il pacchetto linguistico. Queste impostazioni sono ora disponibili solo nelle impostazioni di sistema.

In modalità audit puoi riscontrare un problema 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 una volta le impostazioni di sistema tramite questo comando, potrai aprirle tramite il menu grafico.

Ma nelle impostazioni di sistema puoi 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 perché ciò appesantirebbe notevolmente l'articolo, tanto più che il processo di localizzazione è descritto in dettaglio qui. Ma vorrei attirare la tua attenzione su una caratteristica relativa al cambiamento della lingua del sistema dopo l'installazione del pacchetto linguistico tramite la console. Questa caratteristica è descritta nella stessa wiki a cui ho fornito il link in precedenza, nella sezione "Aggiunta di una lingua all'elenco delle lingue".

Installerò il pacchetto linguistico senza connessione a Internet.

Dopo la piena localizzazione del sistema, è fondamentale creare un'immagine del sistema.

Passo 4 - installazione delle applicazioni necessarie

Poiché nei sistemi LTSB e LTSC non c'è uno store di applicazioni, l'installazione delle applicazioni dal "Microsoft Store" presenta alcune difficoltà, in particolare per quanto riguarda il download dell'applicazione. Per scaricare le applicazioni, l'azienda "Adguard" ha creato un servizio molto comodo - "Adguard Store", tramite il quale puoi ottenere link temporanei per il download delle applicazioni e dei loro componenti.

Per installare l'applicazione avrai bisogno di file con estensione "Appx" e "AppxBundle". Prima di installare l'applicazione stessa, è necessario installare i suoi componenti. Di norma, i componenti dell'applicazione possono essere facilmente distinti dal nome del file.

Per non rendere l'articolo troppo lungo, non descriverò in dettaglio il processo di installazione delle applicazioni, tanto più che c'è una guida dettagliata. Ma aggiungerò un altro modo per installare le applicazioni nell'attuale account. Le applicazioni possono essere installate utilizzando il programma "App Installer", ma per installare le applicazioni sarà necessaria una connessione a Internet; tuttavia, le applicazioni possono essere installate con un doppio clic del mouse e non sarà necessario avere i loro componenti, tutti i componenti necessari verranno scaricati e installati. "App Installer".

E un piccolo promemoria: durante l'installazione dell'applicazione nell'attuale account non sarà possibile sigillare il sistema. Per sapere come installare le applicazioni in modo che sia possibile sigillare il sistema, vedere le istruzioni sopra menzionate. E per controllare il funzionamento del chiosco, saranno già sufficienti le applicazioni esistenti.

Passo 5 - creazione del file di configurazione per il chiosco

Eccoci arrivati alla parte più interessante: la configurazione della modalità chiosco. Guardiamo nella istruzioni sezione di configurazione e vediamo. Prima di tutto, dovremo creare un file XML di configurazione, un esempio completo del quale è guardato qui.

Iniziamo dalla configurazione della posizione delle piastrelle. Il modo più semplice per creare una configurazione XML per le piastrelle è esportare il loro stato attuale.

Per prima cosa, aggiungiamo al menu Start le piastrelle delle applicazioni di cui abbiamo bisogno. Attiviamo la ricerca premendo "Win+s", troviamo l'applicazione desiderata, facciamo clic con il pulsante destro del mouse su di essa e selezioniamo "Fissa nella schermata di avvio".

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 piastrelle delle applicazioni classiche rimandano a collegamenti. Ora, trascinando le piastrelle direttamente nel menu Start, dividerò le piastrelle fissate in due gruppi. Per creare un nuovo gruppo di piastrelle, trascina una piastrella ben sopra o sotto le altre piastrelle, verrà visualizzato un separatore intuitivamente comprensibile. 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", fai clic con il pulsante sinistro del mouse. Chiamerò il primo gruppo "Impostazioni", che conterrà le piastrelle "Opzioni" e "Sicurezza di Windows". Il secondo gruppo sarà chiamato "Applicazioni per ufficio", in cui entreranno tutte le altre piastrelle. A proposito, è possibile spostare interi gruppi di piastrelle trascinandoli per le due righe che si trovano in alto a destra del nome del gruppo.

Poiché nel riquadro "Sicurezza di Windows" non si adatta completamente il nome, ne modificherò la dimensione in "Largo". Per modificare la dimensione della piastrella, è necessario fare clic con il pulsante destro del mouse sulla piastrella e selezionare "Cambia dimensione".

Dopo aver effettuato la configurazione, 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 manualmente, ma prendere un esempio di file da qui delle 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 tile collegate, copiamo l'intero blocco «StartLayoutCollection» da «StartLayout.xml» in «MultiAppKiosk.xml». Per aggiungere applicazioni permesse, è necessario inserire gli identificatori delle applicazioni universali nella sezione «AllowedApps» e aggiungere in questo stesso blocco il percorso completo ai file eseguibili delle applicazioni classiche, che è indicato nelle proprietà delle icone a cui si riferiscono le tile. Per un rapido accesso all'icona, fai clic con il tasto destro sulla tile fissata e segui il menu «Ulteriori opzioni > Vai alla posizione del file». Tieni presente che per specificare l'ID dell'applicazione universale si usa il parametro «AppUserModelId», mentre per indicare il percorso completo all'applicazione classica si usa il parametro «DesktopAppPath». Un altro piccolo dettaglio, se prevedi di usare IE su un sistema x64, nella lista delle applicazioni permesse è necessario specificare due percorsi per il file eseguibile «Program FilesInternet Exploreriexplore.exe» e «Program Files (x86)Internet Exploreriexplore.exe».

Non darò accesso alle cartelle, quindi elimino la sezione «FileExplorerNamespaceRestrictions».

La visualizzazione della barra delle applicazioni non mi darà fastidio, quindi nella sezione «Taskbar» lascio tutto com'è.

Nell'esempio ci sono due profili, ma io ne avrò solo uno, quindi la sezione con il secondo profilo può essere eliminata. Prima di eliminarla, fai attenzione all'esempio di avvio automatico dell'applicazione con argomenti.

Nella sezione «Configs» gli account sono collegati ai profili, tieni presente che a un profilo possono essere collegati più account. Poiché mi interessa solo un account, eliminerò tutti i collegamenti tranne il primo – i blocchi «Config». Nella rimanente associazione inserirò il nome utente «User».

Ho ottenuto un file con i seguenti parametri

MultiAppKiosk.xml

<![CDATA[
                    
                    
                      
                        
                          
                            
                            
                          
                          
                            
                            
                            
                            
                            
                          
                        
                      
                    
                  ]]>
          
          
      
  
  
      
          Utente

Quando crei i tuoi file XML di configurazione, non dimenticare che ogni profilo deve avere un ID unico, non solo all'interno di un singolo file XML, ma anche all'interno di un sistema operativo. Per evitare confusione, in teoria si può creare ogni volta un nuovo identificatore, il che può essere fatto nell'ambiente PowerShell usando il comando «[guid]::NewGuid()». E assicurati di salvare il file in codifica «UTF-8», poiché se il file viene salvato in codifica «ANSI», durante la preparazione del pacchetto riceverai un errore se nel file XML ci sono caratteri cirillici.

Passo 6 – Applicazione delle impostazioni del multi-chiosco

Consideriamo due modi per applicare le impostazioni descritte nel file di configurazione. Il primo consiste nell'utilizzare un pacchetto di preparazione, che deve essere creato in ICD. Per alcuni, questo metodo potrebbe essere più familiare. Il secondo consiste nell'utilizzare il «MDM Bridge WMI Provider», che mi è sembrato più comodo.

Metodo n°1

Chi non ha ICD, scarica l'ADK e installalo. L'installazione dell'ADK è molto semplice, puoi lasciare il set di componenti di default.

Avvia ICD, fai clic sulla piastrella «Preparazione aggiuntiva», specifica il nome e la cartella del progetto e fai clic su «Avanti». Nella finestra successiva, seleziona «Tutte le versioni di Windows per desktop» e fai clic su «Avanti». Puoi saltare l'importazione del pacchetto di preparazione, fai clic su «Fine».

Espandi il menu a discesa «Opzioni di runtime», quindi espandi il sottomenu «AssignedAccess» e seleziona l'opzione «MultiAppAssignedAccessSettings». Nella parte superiore della sezione centrale della finestra ICD, fai clic sul pulsante «Sfoglia» e specifica la posizione del file XML con le impostazioni. Per ogni evenienza, puoi salvare il progetto premendo «Ctrl+s». Nell'angolo in alto a sinistra di ICD, seleziona «Esporta», nel menu a discesa scegli l'opzione «Pacchetto di preparazione». Come proprietario, seleziona «IT-amministratore», puoi saltare tutte le altre domande premendo «Avanti» e, alla fine, fai clic su «Compila» e «Fine».

Nel sistema installato, non dimenticare di creare l'utente «User», non può essere aggiunto al gruppo «Amministratori» altrimenti il multi-chiosco non funzionerà. Ho creato l'utente nell'ugello «Gestione computer» con scadenza della password illimitata.

Ora avviamo il pacchetto di preparazione nel sistema precedentemente installato. Dopo l'applicazione del pacchetto di preparazione, il menu di avvio e quello dell'amministratore cambieranno. Dovrebbero scomparire i pulsanti: «Documenti», «Immagine», «Impostazioni» nella colonna di sinistra del menu di avvio. Se il menu di avvio non è cambiato, allora qualcosa è andato storto. Il pacchetto installato può essere eliminato aprendo la finestra «Impostazioni > Account > Accesso all'account dell'ufficio o dell'istituto > 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 è stato configurato Multikiosk e guarda il risultato.

Metodo n. 2

Applicazione delle impostazioni tramite «MDM Bridge WMI Provider» descritta qui. 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ò creare una soluzione che sia comoda per sé. Io ho realizzato un paio di script.

MiltiKiosk.bat – script per l'avvio

@echo off
chcp 1251>nul

if not exist "%~dp0psexec.exe" call :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 trovati file PS con inizio del 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 :eof

MiltiKiosk_Ver.12.ps1 – script principale

Funzione ConvertEncoding ([string]$From, [string]$To) {
    Inizio { $encFrom = [System.Text.Encoding]::GetEncoding($From); $encTo = [System.Text.Encoding]::GetEncoding($To) }
    Elaborazione { $bytes = $encTo.GetBytes($_); $bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes); $encTo.GetString($bytes) -replace [char]0, '' }
}

Funzione ShowMessage ($Message='', $Align=0) {
    Prova { $Align = [decimal]$Align } Cattura { Ritorna '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 }; Ritorna }
    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) {
        Prova { $String = [int]$String } Cattura {}
        if ($String -is [int]) { for ($i=1; $i -le $String; $i++) { Write-Host }; continua }
        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, 'Premi "Enter" per chiudere il script') -Align 2; Read-Host; Uscita }

Funzione MainMenu() {
    ShowMessage (13, ' 0 - Uscita', ' 1 - Seleziona file XML da installare', ' 2 - Mostra configurazione attuale del multi-kiosk', ' 3 - Rimuovi 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
    Mentre ($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 premi "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 - Seleziona file XML da installare', ' 2 - Mostra configurazione attuale del multi-kiosk', ' 3 - Rimuovi impostazioni del multi-kiosk', 1) }
    }
}

Funzione XMLSelection() {
    Clear-Host

    if (!(Test-Path -Path $PSScriptRoot 'XML')) { ShowMessage -Message (13, 'Catalogo non trovato', $('"'+$PSScriptRoot+'XML"'), 1, 'Premi "Enter" per tornare al menu precedente') -Align 2; Read-Host; Ritorna }

    $local:XMLList = @()
    $XMLList += Get-ChildItem -Path $PSScriptRoot 'XML' -name -filter '*.xml'
    if ($XMLList.Count -eq  0) { ShowMessage -Message (13, 'Nessun file XML trovato nella directory', $('"'+$PSScriptRoot+'XML"'), 1, 'Premi "Enter" per tornare al menu precedente') -Align 2; Read-Host; Ritorna }

    [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
    Mentre ($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') }
        }
    }
}

MainMenu

Se vuoi utilizzare la mia soluzione, conserva nella stessa cartella gli script menzionati con i loro nomi originali e inserisci nella stessa cartella il file «PsExec.exe». Nella stessa cartella crea una cartella «XML» e copia al suo interno i file XML per la configurazione del chiosco multimediale. Utilizzerò lo stesso file del primo metodo.

MultiAppKiosk.xml

<![CDATA[
                    
                    
                      
                        
                          
                            
                            
                          
                          
                            
                            
                            
                            
                            
                          
                        
                      
                    
                  ]]>
          
          
      
  
  
      
          Utente

Un po' sulle caratteristiche dello script. Lo script è progettato per l'uso di file XML con codifica «UTF8», se desideri utilizzare la codifica «ANSI», rimuovi il parametro «encoding UTF8» dall'impostazione di lettura del file. Nella cartella «XML» è necessario posizionare i file XML senza sostituire i caratteri; lo script sostituirà automaticamente i caratteri speciali con le corrispondenti designazioni. Per non confondersi con i GUID associati agli utenti ai profili, puoi semplicemente indicare il numero o il nome utente tra parentesi graffe; tutto il contenuto tra le parentesi graffe sarà sostituito dai GUID.

Utilizzare lo script è molto semplice, basta avviarlo e scegliere l'opzione necessaria. Per cambiare la configurazione attuale in una nuova non è necessario eliminare quella attuale, sarà sovrascritta. Non dimenticare di creare gli utenti specificati nel file di configurazione.

Quando visualizzi la configurazione attuale del chiosco multimediale nella stessa sessione in cui è stata applicata, verranno visualizzate combinazioni di simboli sostitutivi al posto dei caratteri speciali. Dopo aver cambiato sessione (riavviando lo script), tutti i caratteri speciali verranno visualizzati nella loro forma originale.

Passo 7 – sigillatura del sistema

Il chiosco multimediale funziona, ebbene, tutto sembra finito...

Se tutto procede secondo i piani, significa che non stai notando qualcosa.

Non dimentichiamo che dobbiamo ancora convertire il sistema dalla modalità audit alla modalità di benvenuto. Ma siamo pronti per questo, avviamo «Sysprep.bat», selezioniamo l'opzione 2, il sistema viene sigillato. Accendiamo il dispositivo, il sistema si avvia, accediamo all'account utente per il quale è stato configurato il chiosco multimediale e non riusciamo ad accedere. Dopo la scritta «Benvenuto» appare la scritta «Disconnessione».

Inizialmente volevo descrivere solo la soluzione al problema, ma poi ho deciso di descrivere i passaggi per identificare il problema e trovare la soluzione più semplice poiché sicuramente molti di voi avranno dubbi – «E se fosse in questo modo…». Credo che descrivere vari esperimenti vi farà risparmiare un notevole tempo se desiderate trovare un'altra soluzione. Affinché le informazioni siano il più accurate possibile, e per assicurarvi nuovamente dell'assenza di errori, descriverò gli esperimenti nel formato «ho fatto – ho registrato». Cioè, ripeterò 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 multikiosk funzionava, sigillato – non funziona.

Esperimento 1

Rimuoviamo il pacchetto di preparazione installato, nella console «Gestione computer» rimuoviamo l'utente «User» e creiamo un nuovo utente con nome «User», applichiamo il pacchetto di preparazione, accediamo all'account «User» – non funziona. Accediamo come «Admin», rimuoviamo l'utente «User» dal gruppo «Utenti», lo aggiungiamo al gruppo «Amministratori», accediamo come «User» – non funziona. Accediamo come «Admin», rimuoviamo il pacchetto di preparazione con il multikiosk, accediamo come «User» – siamo riusciti ad accedere, ma ovviamente la modalità multikiosk non funziona poiché il pacchetto di preparazione è stato rimosso.

Esperimento 2

Carichiamo un'immagine di 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 che si apre avviamo «sysprep». Le impostazioni di sysprep nella finestra: «Passaggio alla schermata di benvenuto del sistema (OOBE)», «Preparazione per l'uso», «Riavvio». Facciamo clic su «OK» e aspettiamo il benvenuto del sistema operativo. Rispondiamo alle domande al primo avvio del sistema: «Continuare nella lingua selezionata?» – «russo»; regione – Russia; disposizione della tastiera – Russa; aggiungere una seconda disposizione della tastiera – saltare; «Colleghiamoci alla rete» – «Saltare per ora»; connettersi a Internet – no; accordo di licenza – accettare; «Chi utilizzerà questo computer» – «Test»; creazione della password – lascio il campo vuoto; lavoro comodo su diversi dispositivi – no; impostazioni sulla privacy – accettare. Il sistema operativo si è avviato, nell'utilità «Gestione computer» creiamo un utente di nome «User», aggiungiamo il pacchetto di preparazione. Risultato – non funziona.

Esperimento 3

Carichiamo un'immagine di 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 Windows» attiviamo l'impostazione «Abilita aggiornamenti consigliati tramite aggiornamento automatico», per precauzione riavviamo. Nel centro aggiornamenti facciamo clic su «Controlla aggiornamenti» e riavviamo finché non sono installati tutti gli aggiornamenti. Scolleghiamo il sistema da Internet. Avviamo «sysprep» in modalità grafica e ripetiamo tutte le azioni descritte nel passaggio precedente dall'avvio dello strumento «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 di quelle dell'esperimento 2. Al primo avvio del sistema selezioniamo le stesse impostazioni dell'esperimento 2, ad eccezione delle impostazioni regionali e di lingua poiché la lingua russa non è disponibile. Creiamo esattamente lo stesso utente «User» e aggiungiamo il pacchetto di preparazione. Risultato – funziona. Cioè, il problema è legato alla localizzazione.

Esperimento 5

Carichiamo un'immagine di sistema – localizzata in modalità audit.

Nell'utilità «Gestione computer» creiamo un utente «User», aggiungiamo il pacchetto di preparazione, accediamo all'account «User», il multimediale funziona.

Effettuiamo il logout dall'account e accediamo con l'account «Admin». Avviamo PowerShell con privilegi di amministratore, eseguiamo il comando «Dism /online /Get-Intl» e vediamo «Lingua dell'interfaccia utente predefinita: en-US».

Avviamo da USB in WinPE, il sistema operativo espanso è sul 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», il multichiosco non funziona.

Per chiarire il legame di causa ed effetto dell'emergere del problema, proviamo di nuovo a rendere il multichiosco funzionante e non funzionante.

Avviamo da USB in WinPE, il sistema operativo espanso è sul 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», il multichiosco funziona.

Avviamo da USB in WinPE, il sistema operativo espanso è sul 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», il multichiosco non funziona.

Quindi, possiamo vedere una chiara dipendenza dal funzionamento del chiosco in base al valore della lingua dell'interfaccia utente predefinita. Ci sono forse altri fattori che influenzano il funzionamento del multichiosco?

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 di quelli durante l'esperimento 2. Aspettiamo l'accoglienza del sistema operativo e rispondiamo alle domande: «Continuare nella lingua selezionata?» – «English (United States)»; regione – Russia; layout della tastiera – Russa. Tutti i parametri sono stati selezionati come nell'esperimento 2.

Controlliamo i parametri del valore della lingua dell'interfaccia utente predefinita. Eseguiamo il comando «Dism /online /Get-Intl» e vediamo «Lingua dell'interfaccia utente di sistema predefinita: en-US». Nella console «Gestione computer» creiamo l'utente «User», aggiungiamo il pacchetto di preparazione, accediamo all'account «User», il multichiosco funziona.

Proviamo a rompere il chiosco modificando la lingua dell'interfaccia utente predefinita. Accediamo all'utente «Test», creato al primo avvio del sistema, e abilitiamo l'accesso automatico in modo che il sistema non si avvii subito nell'account «User». Eseguiamo «netplwiz», selezioniamo l'utente «Test», deselezioniamo la casella «Richiedi l'inserimento del nome utente e della password» e applichiamo le configurazioni.

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 «Default system UI language: ru-RU».

Accediamo al sistema, proviamo a entrare nell'account «User», il multikiosk funziona. Cioè, non può essere compromesso. Ma è possibile costringerlo a funzionare in questo modo?

Esperimento 7

Carichiamo un'immagine di sistema – localizzata in modalità audit.

Eseguiamo «Sysprep.bat», scegliamo l'opzione 2. Accediamo al sistema, nell'app «Gestione computer» creiamo l'utente «User», aggiungiamo il pacchetto di preparazione, entriamo nell'account «User», il multikiosk 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 «Default system UI language: en-US».

Accediamo al sistema, proviamo a entrare nell'account «User», il multikiosk non funziona.

Si scopre che cambiando l'impostazione della lingua dell'interfaccia utente predefinita si può influenzare il funzionamento del multikiosk solo quando il sistema è in modalità audit o al primo avvio dopo il completamento del sistema. Ciò significa che sarà necessario completare il sistema con un file di risposta in cui è selezionata la lingua del sistema in inglese, e poi modificare le impostazioni di sistema affinché l'interfaccia sia in russo. Non è una soluzione molto buona. Si può risolvere il problema installando un pacchetto linguistico o pacchetti linguistici aggiuntivi?

Esperimento 8

Carichiamo l'immagine del sistema – in lingua inglese in modalità audit.

Ci connettiamo a Internet, nelle impostazioni di sistema, andiamo nella sezione «Language», scegliamo «Add language», selezioniamo la lingua «Русский», clicchiamo «Next», lasciamo le opzioni di installazione di default, clicchiamo «Install», dopo l'installazione del pacchetto linguistico riavviamo il sistema, ora è in russo. Scolleghiamo il sistema da Internet, eseguiamo «Sysprep.bat», scegliamo l'opzione 2.

Dopo il caricamento del sistema, nell'app «Gestione computer» creiamo l'utente «User», aggiungiamo il pacchetto di preparazione, entriamo nell'account «User», il multikiosk non funziona.

Esperimento 9

Proviamo a localizzare il sistema prima dell'installazione, in modalità offline. Sarà anche un breve corso sulla localizzazione della distribuzione.

Prendo una chiavetta USB con il pacchetto di distribuzione originale pulito – X21-96381. Sarà il disco "E". Per montare le immagini creo le cartelle: "c:MountInstall", "c:MountWinre", "c:MountBoot". Prendo il pacchetto di localizzazione – X21-87814. E nella cartella "c:Mount" copio i pacchetti: "Microsoft-Windows-Client-Language-Pack_x86_ru-ru.cab", "lp.cab", "WinPE-Setup_ru-ru.cab". Avvio il terminale con i 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_ru-ru.cabcode
dism /Image:Installcode /Set-AllIntl:ru-ru
dism /Image:Install /Set-TimeZone:"Russian Standard Time"code

dism /Mount-Wim /WimFile:InstallWindowsSystem32RecoveryWinre.wim /index:1 /MountDir:Winrecode
dism /Image:Winre /Add-Package /PackagePath:lp.cabcode
dism /Image:Winrecode /Set-AllIntl:ru-ru
dism /Image:Winre /Set-TimeZone:"Russian Standard Time"code
dism /Unmount-Image /MountDir:Winre /Commitcode

dism /Image:Install /Gen-LangINI /distribution:E: /Set-AllIntl:ru-RUcode
dism /image:Install /Set-SetupUILang:RU-ru /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:ru-ru
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_ru-ru.cabcode
dism /Image:Bootcode /Set-AllIntl:ru-ru
copy e:sourceslang.ini Bootsourceslang.ini /ycode
dism /Unmount-Image /MountDir:Boot /Commit

Ci avviamo dalla chiavetta USB, scegliamo la lingua russa e installiamo il sistema su un disco pulito. Quando il sistema richiede di selezionare la regione, premiamo "Ctrl+Shift+F3". Nella console "Gestione computer" creiamo l'utente "User", aggiungiamo un pacchetto di preparazione, accediamo all'account "User", il multiscreen non funziona.

Ci avviamo dalla chiavetta USB in WinPE. Eseguiamo il comando "Dism /image:E: /Set-UILang:en-us".

Accediamo al sistema, cerchiamo di entrare nell'account "User", il multiscreen funziona.

Chiaramente non è un problema dei metodi di aggiunta del pacchetto, proviamo ad aggiungere pacchetti aggiuntivi.

Esperimento 10

Prendiamo la chiavetta USB che abbiamo preparato nel passaggio 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. Copio dalla sua cartella «c:Mount» i pacchetti: «Microsoft-Windows-RetailDemo-OfflineContent-Content-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-RetailDemo-OfflineContent-Content-ru-ru-Package~31bf3856ad364e35~x86~~.cab».

Avviamo la console con i diritti di amministratore ed eseguiamo i comandi:

Team

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 /Commit

Avviamo da una pen drive, selezioniamo la lingua russa 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 e 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, ma il mini-live non funziona.

Ci avviamo dalla chiavetta USB in WinPE. Eseguiamo il comando "Dism /image:E: /Set-UILang:en-us".

Accediamo al sistema, cerchiamo di entrare nell'account "User", il multiscreen funziona.

Soppressione del problema

Eroi normali. Vanno sempre in giro!

Diversi metodi di installazione dei pacchetti di localizzazione non hanno risolto il problema, quindi dovremo impostare la lingua «en-us» al primo avvio dopo l'incapsulamento e successivamente modificare le impostazioni linguistiche.

Carichiamo un'immagine di sistema – localizzata in modalità audit.

Nel file «Unattend.xml» nel parametro scriviamo «en-US», avviamo «Sysprep.bat», scegliamo l'opzione 2 e vediamo cosa abbiamo ottenuto. Lo schermo di benvenuto è in inglese, il mini-live – funziona. Quindi è necessario aggiungere nel «Unattend.xml» un comando per modificare la lingua di benvenuto. Per fare questo, è necessario eseguire il comando «control intl.cpl,,/f:» specificando il file di configurazione, nel quale sarà indicato il copia dei parametri correnti nello schermo di benvenuto. Il contenuto del file di configurazione sarà simile a questo.

Poiché verranno copiate le impostazioni dell'utente attuale, l'esecuzione del comando deve avvenire dopo l'accesso dell'utente al sistema, il che significa che ne avremo bisogno. C'è però un piccolo "ma": l'esecuzione avverrà dopo l'accesso dell'utente con diritti di amministratore. E non mi piace l'idea di creare un file aggiuntivo necessario per un'esecuzione riuscita del comando. È meglio implementare tutto in un unico file — "Unattend.xml". Per fare ciò, è 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 questo caso è necessario eseguire l'escape delle parentesi angolari con il circonflesso. Ovvero, per creare il file di configurazione si otterrà un comando di questo tipo.

echo ^^^^^^>Config.xml

Ma dobbiamo inserire questo comando in un XML, che ha i propri requisiti per l'uso dei caratteri speciali:

Carattere speciale
Valore sostitutivo

>
>

<
<

&
&

‘
'

“
"

Quindi, per creare il file di configurazione, il comando risultante per "FirstLogonCommands" è il seguente.

cmd.exe /c echo ^<gs:GlobalizationServices xmlns:gs=&quot;urn:longhornGlobalizationUnattend&quot;^>^<gs:UserList^>^<gs:User UserID=&quot;Current&quot; CopySettingsToSystemAcct=&quot;true&quot;/^>^</gs:UserList^>^</gs:GlobalizationServices^>&gt;&quot;%TMP%Config.xml&quot;

Dopo, eseguiamo il comando utilizzando il file di configurazione.

control intl.cpl,,/f:&quot;%TMP%Config.xml&quot;

Successivamente, rimuoviamo il file precedentemente creato e riavviamo il sistema poiché le modifiche avranno effetto solo dopo il riavvio.

cmd.exe /c del &quot;%TMP%Config.xml&quot; /q&&shutdown /r /f /t 00

Alla fine, ho ottenuto un file di risposte di questo tipo 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 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"
                    UsaConfig
                    2
                
                
                    cmd.exe /c del "%TMP%Config.xml" /q&shutdown /r /f /t 00
                    EliminaConfig
                    3

Controlliamo…

Carichiamo un'immagine di sistema – localizzata in modalità audit.

Sostituiamo il file Unattend.xml con quello nuovo, avviamo «Sysprep.bat», selezioniamo l'opzione 2 e vediamo cosa abbiamo ottenuto. Al primo avvio, lo schermo di benvenuto è in inglese e il sistema si riavvia. Lo schermo di benvenuto è in russo e il mini browser funziona.

Se hai domande sul setup e sulla licenza di Windows 10 IoT Enterprise, contattaci all'indirizzo mse@quarta.ru o sul sito quarta-embedded.ru.
Puoi trovare risposte ad alcune domande nella nostra wiki o sul nostro canale YouTube

Autore dell'articolo: Borisenkov Vladimir, esperto tecnico dell'azienda Quarta Tecnologie.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS - ProHoster