Windows 10 IoT Enterprise 2019 - Modu Multikiosk

Introduzione

Windows 10 IoT Enterprise 2019 hè u nome di marketing per a prossima versione di Windows 10. A liberazione di sta versione hè stata annunziata in settembre 2018, rispettivamente, hà a versione 1809, 18 hè l'annu, 09 hè u mese. Parechji articuli sò stati scritti nantu à a nova versione di Windows 10 1809, ma a maiò parte di elli sò dedicati à diversi "archi", "bellezze" è diverse funziunalità chì sò in dumanda in casa.
Questu articulu discuterà solu e funziunalità chì ponu esse dumandate trà i pruduttori di dispusitivi fissi. Vale à dì, nantu à e novi capacità di u modu "Kiosk". U tema di cambià i nomi di schemi di serviziu per l'edizioni Windows di u segmentu di l'impresa serà ancu toccu.

Vechju schema di serviziu cù un novu nome

Permettemu di principià cù una breve spiegazione: in u segmentu corporativu di l'edizioni Windows, ci sò dui schemi di serviziu secondu chì Windows riceve l'aghjurnamenti. I diagrammi di serviziu anu una designazione di lettera. Attualmente i rami di serviziu sò chjamati LTSC è SAC.

LTSC significa Canale di serviziu à longu andà (cù mantenimentu longu). Nanzu, un tali canali era chjamatu LTSB - Long Term Servicing Branch. Microsoft hà cambiatu solu u nome di u canali di serviziu, u serviziu stessu ferma u listessu.

Microsoft hà ancu cambiatu u nome di a filiera di serviziu CBB - Current Branch for Business, avà sta filiera di serviziu hè chjamata SAC - Canale Semi annuali. In novu, solu u nome hà cambiatu.

Ma deve esse citatu chì i rami di serviziu LTSC è SAC utilizanu diverse distribuzioni Windows.

Un pocu nantu à u novu modu kiosk à SAC

Cumu l'aghju digià dettu, LTSC è SAC anu distribuzioni diffirenti. LTSC ùn hà micca app universali standard o una app store, ma SAC hà. Dunque, LTSC ùn hà micca un navigatore Edge, ma SAC hà. Se selezziunate u navigatore Edge quandu cunfigurate un kiosk, allora dui modi sò avà dispunibili:

  1. Cum'è un segnu digitale o display interattivu
  2. Cum'è un navigatore publicu

Ùn mi stenderaghju micca nantu à stallà sti modi, perchè ... A cunfigurazione hè assai simplice è hè fatta in una interfaccia grafica. Basta à creà un utilizatore chì ùn hè micca un membru di u gruppu di l'Amministratori, attivate u modu di kiosk per ellu cù EDGE è vede cumu funziona sti modi.

Kiosk cù parechje applicazioni

Certi pirsuni pensanu chì l'usu licenziatu Windows 10 IoT Enterprise implica u funziunamentu di una sola applicazione nantu à u dispusitivu, in fattu questu ùn hè micca u casu. U dispusitivu deve esse pensatu per fà una sola attività cummerciale è l'utilizatore ùn deve micca accessu à un desktop. Avà Microsoft stessu hà datu u strumentu per utilizà parechje applicazioni. Stu modu hè chjamatu "multi-app kiosk"; in seguitu, per brevità, u chjameraghju "multikiosk". In questu articulu avemu da circà à stallà stu modu utilizendu u pacchettu di software è alcune di e caratteristiche di stu modu.

Un pocu nantu à u modu Multikiosk

Quandu accede à un contu d'utilizatore per quale u modalità multi-kiosk hè cunfigurata, u sistema funziona in modu di tableta. U menu Start si espanderà à u screnu pienu, affissendu i tile di l'applicazione.

Lista di paràmetri basi è capacità di modu:

  1. Configurazione per parechji utilizatori o gruppi
  2. Ogni utilizatore o gruppu pò esse assignatu paràmetri individuali
  3. Capacità di utilizà applicazioni universali è classici
  4. A capacità di lancià automaticamente una di l'applicazioni quandu l'utilizatore accede
  5. Applicazioni in lista bianca
  6. Accessu à i cartulare cù una lista bianca

Hè vale a pena attente à u puntu 5. Per automaticamente, solu l'applicazioni chì sò necessarii per u funziunamentu di u sistema seranu permessi di travaglià, altre applicazioni deve esse aghjuntu à a lista di quelli permessi. Quelli. Avà ùn avete micca bisognu di cunfigurà AppLocker separatamente. In modu, per evità cunflitti cù i paràmetri di AppLocker, in u modu multi-kiosk, tutte e regule AppLocker cunfigurate ùn applicàranu micca.

U puntu 6 indica una bona opzione, ma à u mumentu hè solu pussibule di dà permessu di scrittura à u cartulare "Downloads". U modu permette di utilizà applicazioni universale è classicu. Tutti i paràmetri di u modu sò specificati in un schedariu XML, in quale pudete ancu specificà paràmetri per una sola applicazione kiosk.

Avà pruvemu à stallà tuttu ...

Chì avemu bisognu...

  1. Prima di tuttu, avemu bisognu di u sistema stessu, chì sustene u modu multikiosk. Quì pudete scaricà versione demo
  2. Istruzzioni per a stallazione di un multikiosk
  3. Ogni editore XML
  4. Per applicà paràmetri multikiosk:
    1. Per u metudu N ° 1 - ICD, chì face parte di l'ADK. ADK hè pussibule scaricà quì
    2. Per u metudu N ° 2 - l'utilità PsExec. L'utilità pò esse scaricà quì

Ellu disse - "Andemu!"

Cunduceraghju tutti l'esperimenti nantu à Windows 10 IoT Enterprise 1809 LTSC x32 versione cummerciale, micca una versione demo. U sistema ùn serà micca attivatu perchè mancanza di attivazione ùn affetta micca a funziunalità di u sistema. Aghju pigliatu 32 bits solu perchè occupa menu spaziu è serà più veloce per travaglià cù l'imaghjini di u sistema.

Passu 1 - stallazione

L'installazione di Win 10 IoT Enterprise ùn hè micca sfarente di l'installazione di Win 10 Enterprise, per quessa, ùn descriveraghju micca tuttu u prucessu di stallazione, parleraghju solu di alcune di e sfumature.

Just in casu, lasciami ricurdà, ùn stallà u sistema sopra à u stallatu unu. Quandu l'installatore dumanda nantu à u locu di stallazione di u sistema, sguassate tutte e partizioni in u futuru discu di u sistema è specificate un discu senza partizioni.

Stallà u sistema senza una cunnessione Internet per chì u sistema ùn tira micca nunda innecessariu.

Perchè Creeremu l'imaghjini di salvezza di u sistema è per questu l'avemu sigillatu in u modu di auditu, allora pudete risparmià un pocu di tempu carchendu u sistema in modu di audit immediatamente dopu a stallazione. Per fà questu, quandu u sistema vi dumanda di selezziunà una regione "Cuminciamu cù a regione. Hè ghjustu" basta à appughjà "Ctrl + Shift + F3".

Passu 2 - crea una maghjina di u sistema

Perchè mock u sistema è pruvà diverse novi paràmetri, hè pussibule chì qualcosa andarà male è avemu bisognu di rinvià u sistema à u so statu originale. È per vultà rapidamente à u so statu originale, avete bisognu di creà una maghjina di u sistema. L'unicu ciò chì aghju da fà hè di copià u "kit di gentleman" - u script è u schedariu di risposta. Tutti i mo schedari sò situati in u cartulare "Sysprep", chì copià à a radica di u discu di u sistema. È naturalmente, sparteraghju stu "set di gentleman" cun voi.

Sysprep.bat - per sigillà u 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 :eof

Quandu hà lanciatu, u script verificarà a presenza di u contu "Admin" è creà unu s'ellu manca. U contu serà aghjuntu à u gruppu Amministratori.

Unattend.xml - schedariu di risposta per sysprep.

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="specialize">
        <component name="Microsoft-Windows-Deployment" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <RunSynchronous>
                <RunSynchronousCommand wcm:action="add">
                    <Path>reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f</Path>
                    <Order>1</Order>
                    <Description>Dont show key page</Description>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Path>reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f</Path>
                    <Order>2</Order>
                    <Description>Dont make account</Description>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Path>cmd.exe /c rd %systemdrive%Sysprep /s /q</Path>
                    <Order>3</Order>
                    <Description>Del Folder</Description>
                </RunSynchronousCommand>
            </RunSynchronous>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <AutoLogon>
                <Enabled>true</Enabled>
                <Username>Admin</Username>
            </AutoLogon>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>en-US; ru-RU</InputLocale>
            <SystemLocale>ru-RU</SystemLocale>
            <UILanguage>ru-RU</UILanguage>
            <UILanguageFallback></UILanguageFallback>
            <UserLocale>ru-RU</UserLocale>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <HideLocalAccountScreen>true</HideLocalAccountScreen>
                <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
                <HideOnlineAccountScreens>true</HideOnlineAccountScreens>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <ProtectYourPC>1</ProtectYourPC>
            </OOBE>
        </component>
    </settings>
</unattend>

Quandu sigillate in modu di auditu, u script aghjunghjera un cumandamentu à u registru per finisce u prucessu "sysprep.exe" per ùn chjude a finestra di sysprep manualmente ogni volta. Quandu sigillatu in u modu ciao, l'script sguasserà u cumandamentu per chjude a finestra da u registru è ellu stessu cambierà u valore di l'architettura in u schedariu di risposta à l'attuale. U schedariu di risposta cuntene paràmetri per l'iniziu di u sistema senza interazzione di l'utilizatori è un cumandamentu per sguassà u cartulare "Sysprep" in a radica di u drive di u sistema.

Avà segeraghju u sistema in modu di auditu cù "Sysprep.bat" è catturà una maghjina di u sistema. Immaginaraghju u sistema cù DISM è imagine solu u voluminu di u sistema. Sè vo imagine solu u voluminu di u sistema, è micca u discu sanu, tandu ùn vi scurdate di cupià u cuntenutu di u cartulare "WindowsSystem32Recovery" à u primu voluminu in u cartulare "RecoveryWindowsRE" dopu à implementà u sistema. Questu hà da esse fattu prima di carricà u SO. dopu à carica u OS, u cartulare "WindowsSystem32Recovery" sarà digià viotu.

Step 3 - Russification di u sistema

U pacchettu di lingua pò esse installatu senza una cunnessione Internet se avete stu pacchettu. Se no, u sistema stessu scaricarà da Internet quandu aghjunghje a lingua in i paràmetri. Solu ùn hè micca bisognu di piglià u pacchettu di lingua da e versioni precedenti di u SO. Per Windows 10 1809 ci deve esse un pacchettu di lingua specificamente per Windows 10 1809.

Microsoft seguita u so pianu di trasferisce gradualmente paràmetri da u menù classicu à u novu, cusì in u pannellu di cuntrollu classicu ùn truverete più paràmetri per cambià a lingua è installà un pacchettu di lingua. Questi paràmetri sò avà solu in i paràmetri di u sistema.

In u modu di auditu, pudete scontru un prublema per apre i paràmetri di u sistema da u menu Start; per apre i paràmetri di u sistema, eseguite u cumandimu - "ms-settings:", fate attenzione à u colon à a fine di u cumandimu, senza ellu u cumandamentu serà. micca travaglià. Dopu avè apertu i paràmetri di u sistema una volta cù stu cumandamentu, pò esse apertu cù u menù gràficu.

Ma in i paràmetri di u sistema pudete installà un pacchettu di lingua se u sistema hè cunnessu à Internet, ùn ci hè micca opzione per sceglie per installà un pacchettu di lingua da un schedariu locale.

Ùn scriveraghju micca u prucessu di localizazione di u sistema perchè ... questu cumplicà significativamente l'articulu, soprattuttu chì u prucessu di localizazione hè detallatu descrittu quì. Ma vogliu attirà a vostra attenzione à a peculiarità di cambià a lingua di u sistema dopu avè installatu un pacchettu di lingua cù a cunsola. Sta funzione hè descritta in a stessa wiki à quale aghju furnitu un ligame prima, in a subsection "Aghjunghje una lingua à a lista di lingue".

Stallà u pacchettu di lingua senza una cunnessione Internet.

Dopu a localizazione cumpleta di u sistema, assicuratevi di creà una maghjina di u sistema.

Passu 4 - Stallà l 'applicazzioni nicissarii

Perchè Siccomu i sistemi LTSB è LTSC ùn anu micca un magazinu d'applicazioni, l'installazione di l'applicazioni da u Microsoft Store causa alcune difficultà, vale à dì scaricà l'applicazione. Per scaricà l'applicazioni, a cumpagnia Adguard hà fattu un serviziu assai convenientu - "Adguard Store", cù quale pudete ottene ligami di scaricamentu tempurale per l'applicazioni è i so cumpunenti.

Per installà l'applicazione, avete bisognu di schedari cù l'estensione "Appx" è "AppxBundle". Prima di stallà l'appiecazione stessu, deve stallà i so cumpunenti. Comu regula, i cumpunenti di una applicazione ponu esse distinti intuitivamente da u nome di u schedariu.

Per ùn fà micca l'articulu troppu longu, ùn descriveraghju micca in dettaglio u prucessu di installà l'applicazioni, soprattuttu chì ci hè infurmazione nantu à a stallazione. struzzioni detallati. Ma aghju aghjunghje una altra manera di installà applicazioni in u vostru contu attuale. L'applicazioni ponu esse installate cù u prugramma "App Installer", ma per installà l'applicazioni avete bisognu di una cunnessione Internet, ma l'applicazioni ponu esse installate cù un doppiu clicu è ùn avete micca bisognu di i so cumpunenti, tutti i cumpunenti necessarii scaricanu è installate. "App Installer".

È un picculu ricordu, quandu installate l'applicazione in u contu currente, ùn puderà micca sigillà u sistema. Cumu installà l'applicazioni per pudè sigillà u sistema, vede l'istruzzioni sopra. È per verificà u funziunamentu di u multikiosk, l'applicazioni esistenti sò abbastanza abbastanza.

Passu 5 - creà un schedariu di cunfigurazione per u multikiosk

Avà ghjunghjemu à a parte più interessante - a stallazione di u modu kiosk. Fighjemu struzzione secondu i paràmetri chì vedemu. Prima di tuttu, avemu bisognu di creà un schedariu di cunfigurazione XML, un esempiu cumpletu di quale pò esse truvatu quì. guardate quì.

Cuminciamu per stabilisce u layout di tile. U modu più faciule per creà una cunfigurazione di persunalizazione di tile XML hè esportà u so statu attuale.

Prima di tuttu, aghjunghje tile di l'applicazioni chì avemu bisognu à u menu Start. Chjamate a ricerca "Win + s", truvate l'applicazione desiderata, cliccate right-click è selezziunate "Pin to Start Screen".

Aghju aghjustatu e seguenti app:

  • Notebook
  • Calcolatrice
  • Internet Explorer
  • Filetta
  • WordPad
  • login
  • Sicurezza Windows

L'ultime duie applicazioni sò state appiccicate perchè ... Ùn ci hè simplicemente micca altre applicazioni universali in u pacchettu LTSC standard. Nota chì i tile di u desktop ligami à i shortcuts. Avà, movendu i tile direttamente in u menù Start, separà i tile pinned in dui gruppi. Per creà un novu gruppu di tile, trascinate un tile significativamente più altu o più bassu di l'altri tile, chì mette in risaltu un divisore intuitivu. Pudete chjamà i gruppi à a vostra discrezione; per fà questu, mette u cursore di u mouse sopra à u gruppu, è quandu appare l'inscription "Nome u gruppu", cliccate u buttone manca di u mouse. Chjameraghju u primu gruppu "Settings", includerà i tile "Settings" è "Windows Security". Chjameraghju u sicondu gruppu "Applicazioni di l'Uffiziu", chì includerà tutti l'altri tile. Per via, pudete spustà gruppi interi di tile trascinenduli cù e duie strisce chì si trovanu in cima à diritta di u nome di u gruppu.

Perchè In u tile "Sicurezza di Windows" u nome ùn hè micca cumpletu, cambiaraghju a so dimensione in "Wide". Per cambià a dimensione di una tile, cliccate right-click nant'à u tile è selezziunate "Resize".

Dopu a cunfigurazione, esportemu u statu attuale è eseguite u cumandimu in l'ambiente PowerShell - "Export-StartLayout - path C:SysprepStartLayout.xml".

In seguitu, u modu più faciule ùn hè micca di creà u schedariu di paràmetri stessu, ma piglià un schedariu di esempiu da quì paràmetri - cliccate nant'à u buttone "Copia", incollà u cuntenutu in notepad è salvà cum'è "MultiAppKiosk.xml". Avà cambiamu i paràmetri à i nostri. Per cambià i paràmetri di tile attaccati, copiate tuttu u bloccu "StartLayoutCollection" da "StartLayout.xml" à "MultiAppKiosk.xml". Per aghjunghje l'applicazioni à quelli permessi, avete bisognu di inserisce identificatori universali di l'applicazioni in a sezione "AllowedApps" è in u listessu blocu aghjunghje a strada completa à i fugliali eseguibili di l'applicazioni classiche, chì hè specificatu in e proprietà di i shortcuts à quale u tile riferenu. Per ghjunghje rapidamente à una scurciatoia, fate un clic right nantu à una tile appiccicata è andate à More> Vai à u locu di u schedariu. Nota chì u paràmetru "AppUserModelId" hè utilizatu per specificà l'ID Universal App, è u paràmetru "DesktopAppPath" hè utilizatu per specificà u percorsu sanu à l'applicazione desktop. È una sfumatura più chjuca, se pensa à utilizà IE in un sistema x64, allora in a lista di l'applicazioni permessi deve specificà dui percorsi per u schedariu eseguibile "Program FilesInternet Exploreriexplore.exe" è "Program Files (x86)Internet Exploreriexplore. exe".

Ùn daraghju micca l'accessu à i cartulare, cusì sguassate a sezione "FileExplorerNamespaceRestrictions".

A visualizazione di a taskbar ùn mi feria micca male, perciò lascio tuttu cum'è in a sezione "Taskbar".

In l'esempiu, sò specificati dui profili, ma aghju solu un prufilu, perchè a seccione cù u sicondu prufilu pò esse eliminata. Prima di disinstallare, fate attenzione à l'esempiu di inizià automaticamente una applicazione cù argumenti.

In a sezione "Configs", i cunti sò ligati à i profili; per piacè nutate chì parechji cunti ponu esse ligati à un prufilu. Ma perchè Sò interessatu solu in un contu, allora sguasserà tutte e ligami eccettu u primu - i blocchi "Config". In u ligame restante scriveraghju u nome d'utilizatore "Usuariu".

Aghju avutu stu schedariu cù parametri

MultiAppKiosk.xml

<?xml version="1.0" encoding="utf-8" ?>
<AssignedAccessConfiguration 
  xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config"
  xmlns:rs5="http://schemas.microsoft.com/AssignedAccess/201810/config"
  >
  <Profiles>
      <Profile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}">
          <AllAppsList>
              <AllowedApps>
                  <App AppUserModelId="WINDOWS.IMMERSIVECONTROLPANEL_CW5N1H2TXYEWY!MICROSOFT.WINDOWS.IMMERSIVECONTROLPANEL" />
                  <App AppUserModelId="Microsoft.Windows.SecHealthUI_cw5n1h2txyewy!SecHealthUI" />
                  <App DesktopAppPath="%windir%system32notepad.exe" />
                  <App DesktopAppPath="C:Program FilesInternet Exploreriexplore.exe" />
                  <App DesktopAppPath="%windir%system32win32calc.exe" />
                  <App DesktopAppPath="%windir%system32mspaint.exe" />
                  <App DesktopAppPath="%ProgramFiles%Windows NTAccessorieswordpad.exe" />
              </AllowedApps>
          </AllAppsList>
          <StartLayout>
              <![CDATA[<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
                    <LayoutOptions StartTileGroupCellWidth="6" />
                    <DefaultLayoutOverride>
                      <StartLayoutCollection>
                        <defaultlayout:StartLayout GroupCellWidth="6">
                          <start:Group Name="Настройки">
                            <start:Tile Size="2x2" Column="0" Row="0" AppUserModelID="WINDOWS.IMMERSIVECONTROLPANEL_CW5N1H2TXYEWY!MICROSOFT.WINDOWS.IMMERSIVECONTROLPANEL" />
                            <start:Tile Size="4x2" Column="2" Row="0" AppUserModelID="Microsoft.Windows.SecHealthUI_cw5n1h2txyewy!SecHealthUI" />
                          </start:Group>
                          <start:Group Name="Офисные приложения">
                            <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesWordpad.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%MicrosoftWindowsStart MenuProgramsAccessoriesNotepad.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesCalculator.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesPaint.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationLinkPath="%APPDATA%MicrosoftWindowsStart MenuProgramsAccessoriesInternet Explorer.lnk" />
                          </start:Group>
                        </defaultlayout:StartLayout>
                      </StartLayoutCollection>
                    </DefaultLayoutOverride>
                  </LayoutModificationTemplate>
              ]]>
          </StartLayout>
          <Taskbar ShowTaskbar="true"/>
      </Profile>
  </Profiles>
  <Configs>
      <Config>
          <Account>User</Account>
          <DefaultProfile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}"/>
      </Config>
  </Configs>
</AssignedAccessConfiguration>

Quandu fate i vostri schedarii di cunfigurazione XML, ùn vi scurdate chì ogni prufilu deve avè un ID unicu, è micca solu in un schedariu XML, ma in un OS. Quelli. Ideale, per evità a cunfusione, pudete creà un novu identificatore ogni volta; questu pò esse fattu in l'ambiente PowerShell usendu u cumandimu "[guid]::NewGuid()". È assicuratevi di salvà u schedariu in codificazione "UTF-8"; se u schedariu hè salvatu in codificazione "ANSI", allora quandu custruisce u pacchettu di preparazione riceverete un errore se u schedariu XML cuntene cirillicu.

Passu 6 - applicà paràmetri multikiosk

Fighjemu dui modi per applicà i paràmetri descritti in u schedariu di cunfigurazione. U primu hè attraversu un pacchettu di pruvista, chì deve esse creatu in ICD. Per alcuni, forsi stu metudu serà più familiar. U sicondu hè aduprendu u "MDM Bridge WMI Provider", stu metudu mi pareva più cunvene.

U Metu # 1

Quale ùn hà micca un ICD? Scaricate ADK è stallà. L'installazione di ADK hè assai simplice; u settore di cumpunenti pò esse lasciatu predeterminatu.

Lanciari ICD, cliccate nant'à u tile "Preparazione Avanzata", specificà u nome è u cartulare di u prugettu è cliccate "Next". In a finestra dopu, selezziunate "Tutte l'edizzioni di u desktop Windows" è cliccate "Next". Pudete saltà l'importazione di u pacchettu di preparazione; cliccate "Finish".

Espandi u menù a discesa "Runtime Settings", poi espansione u sottumenu "AssignedAccess" è selezziunate "MultiAppAssignedAccessSettings". À a cima di a sezione media di a finestra ICD, cliccate nantu à u buttone "Browse" è indicà u locu di u schedariu XML cù i paràmetri. In casu, pudete salvà u prugettu pressu "Ctrl + s". In a parte superiore manca di l'ICD, selezziunate "Export" è selezziunate "Provisioning Package" da u menù a tendina. Cum'è u pruprietariu, selezziunate "Amministratore IT"; tutte e altre dumande ponu esse saltate clicchendu "Next" è à a fine cliccate "Custruisce" è "Finish".

In u sistema installatu, ùn vi scurdate di creà un utilizatore "Usuariu"; ùn pò esse aghjuntu à u gruppu "Amministratori", altrimenti u multikiosk ùn funziona micca. Aghju creatu un utilizatore in Computer Management cù una password chì ùn scade mai.

Avà corremu u pacchettu di preparazione nantu à u sistema installatu prima. Dopu avè applicà u pacchettu di preparazione, u menu Start è u menù di l'amministratore cambiaranu. In a colonna iniziale di manca, i buttoni duveranu sparisce: "Documenti", "Image", "Opzioni". Se u menu di partenza ùn hè micca cambiatu, allora qualcosa hè andatu male. Un pacchettu installatu pò esse sguassatu aprendu u Settings> Accounts> Accessu à u contu di travagliu o di scola> Aghjunghje o sguassate a finestra di u pacchettu di pruvisione.

Se u menu di partenza hè cambiatu, i paràmetri sò appiicati à u sistema, accede cum'è l'utilizatore per quale u multikiosk hè cunfiguratu è fighjate u risultatu.

U Metu # 2

Applicazione di paràmetri cù "MDM Bridge WMI Provider" descrittu quì. A cunvenzione di stu metudu hè a so flessibilità di usu è a capacità di sbarazzarsi di parechje operazioni manuali chì sò necessarii per creà un pacchettu di preparazione. Quì ognunu pò piglià una decisione per elli stessi chì serà cunvene per elli. Aghju fattu un paru di script per mè stessu.

MiltiKiosk.bat - script di lanciu

@echo off
chcp 1251>nul

if not exist "%~dp0psexec.exe" call :ShowMessage "‡‡‡‡‡‡‡‡‡‡‡‡‡Для работы скрипта необходим файл psexec.exe‡‡Для завершения работы скрипта нажмите любую клавишу"&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 Не найдено PS файлов с началом названия - "%~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

Function 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, ''}
}

Function ShowMessage ($Message='', $Align=0) {
    Try {$Align = [decimal]$Align} Catch {Return 'Для параметра Align может быть указано только число' | 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, 'Ошибка получения объекта настроек', 2, 'Нажмите "Enter" для завершения рабты скрипта') -Align 2; Read-Host; Exit}

Function MainMenu() {
    ShowMessage (13, ' 0 - Выход', ' 1 - Выбрать XML-файл для установки', ' 2 - Показать текущую конфигурацию мультикиоска', ' 3 - Удалить настройки мультикиоска', 1)
    $local:PromptText = 'Выберите действие'
    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, 'Начало конфигурации') -Align 2; Write-Host $MultiAppKiosk.Configuration; ShowMessage -Message ('Конец конфигурации', 1, 'Для возврата в меню нажмите "Enter"', 1) -Align 2; Read-Host}
            3 {$MultiAppKiosk.Configuration = $Null; Set-CimInstance -CimInstance $MultiAppKiosk; ShowMessage -Message (1, 'Выполнена команда удаления настроек', 1) -Align 2}
            DEFAULT {ShowMessage 'Выбрано недопустимое значение'}
        }
        if ($Selections -contains $Select) {Clear-Host; ShowMessage (15, ' 0 - Выход', ' 1 - Выбрать XML-файл для установки', ' 2 - Показать текущую конфигурацию мультикиоска', ' 3 - Удалить настройки мультикиоска', 1)}
    }
}

Function XMLSelection() {
    Clear-Host

    if (!(Test-Path -Path $PSScriptRoot'XML')) {ShowMessage -Message (13, 'Не найден каталог', $('"'+$PSScriptRoot+'XML"'), 1, 'Нажмите "Enter" для возврвта в предыдущее меню') -Align 2; Read-Host; Return}

    $local:XMLList = @()
    $XMLList += Get-ChildItem -Path $PSScriptRoot'XML' -name -filter '*.xml'
    if ($XMLList.Count -eq  0) {ShowMessage -Message (13, 'Не найдено XML-файлов в каталоге', $('"'+$PSScriptRoot+'XML"'), 1, 'Нажмите "Enter" для возврвта в предыдущее меню') -Align 2; Read-Host; Return}

    [int]$local:Indent = 13 - $XMLList.Count / 2; if ($Indent -lt 1) {$Indent = 1}
    ShowMessage ($Indent, ' 0 - Вернуться в предыдущее меню')
    for ($i=0; $i -le $XMLList.GetUpperBound(0); $i++) {Write-Host $(' '+($i+1)+' - '+$XMLList[$i])}
    Write-Host
    $local:PromptText = 'Выберите файл для установки'
    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 $('Дана команда на применение настроек из файла '+$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 ('Выбрано недопустимое значение')} 
        }
    }
}

MainMenu

Sè vo vulete aduprà a mo suluzione, poi salvà i scripts sopra cù i so nomi uriginale in un cartulare è mette u schedariu "PsExec.exe" in u listessu cartulare. In u stessu cartulare, crea un cartulare "XML" è copià i schedari XML per cunfigurà u multikiosk in questu. Aduprà u listessu schedariu cum'è in u primu metudu.

MultiAppKiosk.xml

<?xml version="1.0" encoding="utf-8" ?>
<AssignedAccessConfiguration 
  xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config"
  xmlns:rs5="http://schemas.microsoft.com/AssignedAccess/201810/config"
  >
  <Profiles>
      <Profile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}">
          <AllAppsList>
              <AllowedApps>
                  <App AppUserModelId="WINDOWS.IMMERSIVECONTROLPANEL_CW5N1H2TXYEWY!MICROSOFT.WINDOWS.IMMERSIVECONTROLPANEL" />
                  <App AppUserModelId="Microsoft.Windows.SecHealthUI_cw5n1h2txyewy!SecHealthUI" />
                  <App DesktopAppPath="%windir%system32notepad.exe" />
                  <App DesktopAppPath="C:Program FilesInternet Exploreriexplore.exe" />
                  <App DesktopAppPath="%windir%system32win32calc.exe" />
                  <App DesktopAppPath="%windir%system32mspaint.exe" />
                  <App DesktopAppPath="%ProgramFiles%Windows NTAccessorieswordpad.exe" />
              </AllowedApps>
          </AllAppsList>
          <StartLayout>
              <![CDATA[<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
                    <LayoutOptions StartTileGroupCellWidth="6" />
                    <DefaultLayoutOverride>
                      <StartLayoutCollection>
                        <defaultlayout:StartLayout GroupCellWidth="6">
                          <start:Group Name="Настройки">
                            <start:Tile Size="2x2" Column="0" Row="0" AppUserModelID="WINDOWS.IMMERSIVECONTROLPANEL_CW5N1H2TXYEWY!MICROSOFT.WINDOWS.IMMERSIVECONTROLPANEL" />
                            <start:Tile Size="4x2" Column="2" Row="0" AppUserModelID="Microsoft.Windows.SecHealthUI_cw5n1h2txyewy!SecHealthUI" />
                          </start:Group>
                          <start:Group Name="Офисные приложения">
                            <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesWordpad.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%MicrosoftWindowsStart MenuProgramsAccessoriesNotepad.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesCalculator.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesPaint.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationLinkPath="%APPDATA%MicrosoftWindowsStart MenuProgramsAccessoriesInternet Explorer.lnk" />
                          </start:Group>
                        </defaultlayout:StartLayout>
                      </StartLayoutCollection>
                    </DefaultLayoutOverride>
                  </LayoutModificationTemplate>
              ]]>
          </StartLayout>
          <Taskbar ShowTaskbar="true"/>
      </Profile>
  </Profiles>
  <Configs>
      <Config>
          <Account>User</Account>
          <DefaultProfile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}"/>
      </Config>
  </Configs>
</AssignedAccessConfiguration>

Un pocu nantu à e caratteristiche di u script. U script hè pensatu per utilizà i fugliali XML cù a codificazione "UTF8"; se vulete usà a codificazione "ANSI", allora sguassate u paràmetru di "codificazione UTF8" da l'opzione di lettura di file. Duvete mette i fugliali XML in u cartulare "XML" senza rimpiazzà i caratteri; u script stessu rimpiazzà i caratteri speciali cù e designazioni adatte. Per ùn esse cunfusu in i GUID di ligà l'utilizatori à i profili, pudete simpricimenti indicà u numeru d'utilizatore o u nome in curly braces; tuttu u cuntenutu in curly braces serà rimpiazzatu cù GUIDs.

Utilizà u script hè assai simplice, basta à eseguisce è selezziunate l'elementu necessariu. Per cambià a cunfigurazione attuale à una nova, ùn hè micca necessariu di sguassà l'attuale; serà soprascritta. Ùn vi scurdate di creà utilizatori chì sò specificati in u schedariu di cunfigurazione.

Quandu si vede a cunfigurazione multikiosk attuale in a listessa sessione in a quale hè stata applicata, invece di caratteri speciali, cumminazzioni di caratteri di rimpiazzamentu seranu affissati. Dopu avè cambiatu a sessione (riavvià u script), tutti i caratteri speciali seranu affissati in a so forma originale.

Step 7 - Sealing the System

U multikiosk funziona, bè, questu hè tuttu, parerebbe...

Se tuttu va secondu u pianu, allora ùn avete micca nutatu qualcosa.

Ùn vi scurdate chì avemu sempre bisognu di cambià u sistema da u modu di auditu à u modu di accolta. Ebbè, simu pronti per questu, lanciamu "Sysprep.bat", selezziunate u puntu 2, u sistema hè sigillatu. Accendemu u dispusitivu, u sistema boots, accede à u contu d'utilizatore per quale u multikiosk hè cunfiguratu, ma ùn pudemu micca login. Dopu à u missaghju "Benvenuta", appare u missaghju "Logout".

À u principiu, vulia discrive solu a suluzione à u prublema, ma dopu aghju decisu di discrìviri i passi per identificà u prublema è truvà a suluzione più simplice perchè ... Di sicuru, parechji lettori seranu turmentati da vagi dubbi - "E s'ellu hè cusì ...". Pensu chì a descrizzione di e diverse esperimenti vi risparmià una quantità significativa di tempu se vulete truvà una altra suluzione. Per fà l'infurmazioni più precise pussibule, è per una volta assicuratevi chì ùn ci sò micca errori, discriverà l'esperimenti in u formatu "fattu è arregistratu". Quelli. Fararaghju l'esperimenti descritti di novu.

Esperimenti

Chì avemu fattu ? Ci hè dui cunti in u sistema:

"Admin" - in u gruppu "Amministratori".
"User" - in u gruppu "Users".
In u modu di auditu, u multikiosk hà travagliatu, ma quandu sigillatu, ùn hà micca travagliatu.

Esperimentu 1

Sguassemu u pacchettu di preparazione installatu, in u snap-in "Gestione di l'urdinatore" sguassemu l'utilizatore "Usuariu" è creanu un novu utilizatore cù u nome "Usuariu", applicà u pacchettu di preparazione, andate à u contu "Usuariu" - hè micca travaglià. Andemu sottu u nome "Admin", sguassate l'utilizatore "User" da u gruppu "Users", aghjunghje à u gruppu "Administrators", andate sottu u nome "User" - ùn viaghja micca. Entramu sottu u nome "Admin", sguassate u pacchettu di preparazione cù u multikiosk, accede sottu u nome "User" - avemu riisciutu à login, ma di sicuru u modu multikiosk ùn funziona micca perchè U pacchettu di pruvisione hè statu eliminatu.

Esperimentu 2

Caricà l'imagine di u sistema - Russificatu in modu di auditu.

U SO hà caricatu, appughjà "Win + r", perchè A nostra finestra di sysprep hà chjusu automaticamente, eseguite u cumandamentu "sysprep", è eseguite "sysprep" in a finestra chì si apre. Paràmetri di Sysprep in a finestra: "Vai à a finestra di benvenuta di u sistema (OOBE)", "Preparazione per l'usu", "Reboot". Cliccate "OK" è aspettate u salutu OS. Rispondemu à e dumande quandu u sistema si mette per a prima volta: "Cuntinuà in a lingua scelta?" - "Russu"; regione - Russia; layout di u teclatu - Russian; aghjunghje un secondu layout di tastiera - salta; "Let's connect you to the network" - "Skip for now"; cunnette à Internet - no; accordu di licenza - accetta; "Quale aduprà stu computer" - "Test"; crià una password - lasciate u campu viotu; Operazione cunvene nantu à i dispusitivi diffirenti - no; Paràmetri di privacy - accettate. U SO hà caricatu, in u snap-in "Gestione di l'urdinatore" creamu un utilizatore cù u nome "Usuariu", aghjunghje u pacchettu di preparazione. U risultatu hè chì ùn viaghja micca.

Esperimentu 3

Caricà l'imagine di u sistema - Russificatu in modu di auditu.

U SO hà caricatu, cunnette u sistema à Internet, eseguite u cumandimu "gpedit.msc" è in a sezione "Windows Update" attivate l'opzione "Abilita l'aghjurnamenti cunsigliati attraversu l'aghjurnamenti automatichi", riavviate per ogni casu. In u centru di l'aghjurnamentu, cliccate "Verificate l'aghjurnamenti" è reboot finu à chì tutte l'aghjurnamenti sò stallati. Disconnect u sistema da Internet. Lanciamu "sysprep" in modu gràficu è ripetite tutti i passi descritti in u passu precedente da l'esecuzione di l'utilità "sysprep" à aghjunghje u pacchettu di preparazione. U risultatu hè chì ùn viaghja micca.

Esperimentu 4

Caricà l'imagine di u sistema - Inglese in modu di auditu.

Lanciamu "sysprep" in modu gràficu, segele l'OS cù i stessi paràmetri cum'è durante l'esperimentu 2. Quandu u sistema iniziu prima, selezziunate i stessi parametri cum'è in l'esperimentu 2, cù l'eccezzioni di i paràmetri regiunale è di lingua perchè Ùn ci hè micca lingua russa. In u listessu modu, crea un utilizatore "Usuariu" è aghjunghje un pacchettu di provisioning. U risultatu hè chì travaglia. Quelli. U prublema hè ligata à a localizazione.

Esperimentu 5

Caricà l'imagine di u sistema - Russificatu in modu di auditu.

In u snap-in "Gestione di l'urdinatore", crea un utilizatore "Usuariu", aghjunghje un pacchettu di preparazione, andate à u contu "Usuariu", u multi-kiosk funziona.

Scie fora di u vostru contu è accede sottu u contu "Admin". Lancemu PowerShell cù diritti di amministratore, eseguite u cumandimu "Dism /online /Get-Intl" è vede "Lingua di l'interfaccia d'utilizatore predefinita: en-US".

Avviamu da u flash drive in WinPE, u sistema operativu implementatu hè nantu à u mo drive E. Eseguimu u cumandimu "Dism /image:E: /Set-UILang:ru-ru". Fighjemu u risultatu, eseguite "Dism /image:E: /Get-Intl" è vede "Lingua UI di u sistema predeterminatu: ru-RU".

Avviamu in u sistema, accede à u contu "Usuariu", u multikiosk ùn funziona micca.

Per stabilisce chjaramente a relazione causa-e-effettu di u prublema, pruvemu di novu per fà u multi-chiosk di travagliu è micca di travagliu.

Avviamu da u flash drive in WinPE, u sistema operativu implementatu hè nantu à a mo unità E. Eseguimu u cumandimu "Dism /image:E: /Set-UILang:en-us". Fighjemu u risultatu, eseguite "Dism /image:E: /Get-Intl" è vede "Lingua UI di u sistema predeterminatu: en-US".

Avviamu in u sistema, accede à u contu "Usuariu", u multikiosk funziona.

Avviamu da u flash drive in WinPE, u sistema operativu implementatu hè nantu à u mo drive E. Eseguimu u cumandimu "Dism /image:E: /Set-UILang:ru-ru". Fighjemu u risultatu, eseguite "Dism /image:E: /Get-Intl" è vede "Lingua UI di u sistema predeterminatu: ru-RU".

Avviamu in u sistema, accede à u contu "Usuariu", u multikiosk ùn funziona micca.

Quelli. pudete vede una clara dependenza di u rendiment di u kiosk à a lingua predeterminata di l'interfaccia d'utilizatore. Forsi ci sò altri fattori chì affettanu u funziunamentu di u multikiosk?

Esperimentu 6

Per a purità di l'esperimentu, rimettimu u sistema. Caricà l'imagine di u sistema - Russificatu in modu di auditu.

Lanciamu "sysprep" in modu gràficu, segele u SO cù i stessi parametri cum'è durante l'esperimentu 2. Aspittemu chì l'OS ci saluta è risponde à e dumande: "Cuntinuà in lingua scelta?" - "Inglese (Stati Uniti)"; regione - Russia; Disposizione di u teclatu - Russu. Inoltre, tutti i paràmetri sò stati scelti cum'è in l'esperimentu 2.

Fighjemu i paràmetri di lingua predefinitu di l'interfaccia d'utilizatore. Eseguimu u cumandamentu "Dism /online /Get-Intl" è vede "Lingua UI di u sistema predeterminatu: en-US". In u snap-in "Gestione di l'urdinatore", crea un utilizatore "Usuariu", aghjunghje un pacchettu di preparazione, andate à u contu "Usuariu", u multi-kiosk funziona.

Cerchemu di rompe u kiosk cambiendu a lingua predeterminata di l'interfaccia d'utilizatore. Andemu in l'utilizatore "Test", chì hè stata creata quandu u sistema hà iniziatu per prima volta è attivate u login automaticu per quessa chì u sistema ùn sia micca avviatu in u contu "Usuariu". Eseguite "netplwiz", selezziunate l'utilizatore "Test", desmarcate a casella di spunta "Esige nome d'utilizatore è password" è applicà i parametri.

Boot da una unità flash in WinPE. Eseguite u cumandimu "Dism /image:E: /Set-UILang:ru-ru". Fighjemu u risultatu, eseguite "Dism /image:E: /Get-Intl" è vede "Lingua UI di u sistema predeterminatu: ru-RU".

Avviamu in u sistema, pruvate à accede à u contu "Usuariu", u multikiosk funziona. Quelli. ùn pò esse ruttu. Hè pussibule di fà u travagliu cusì?

Esperimentu 7

Caricà l'imagine di u sistema - Russificatu in modu di auditu.

Lanciamu "Sysprep.bat", selezziunate u puntu 2. Avviamu in u sistema, creamu l'utilizatore "Usuariu" in u snap-in "Gestione di l'urdinatore", aghjunghje u pacchettu di preparazione, andate à u contu "Usuariu", u multi- kiosk ùn funziona micca.

Boot da una unità flash in WinPE. Eseguite u cumandimu "Dism /image:E: /Set-UILang:en-us". Fighjemu u risultatu, eseguite "Dism /image:E: /Get-Intl" è vede "Lingua UI di u sistema predeterminatu: en-US".

Avviamu in u sistema, pruvate à accede à u contu "Usuariu", u multikiosk ùn funziona micca.

Risulta chì cambiendu a paràmetra di lingua predeterminata di l'interfaccia d'utilizatore, pudete influenzà a prestazione di u multikiosk solu quandu u sistema hè in modu di auditu o à u primu boot dopu a sigillatura di u sistema. Questu significa chì avete da sigillà u sistema cù un schedariu di risposta in quale a lingua di u sistema serà sceltu in inglese, è dopu cambià i paràmetri di u sistema in modu chì l'interfaccia hè russa. Micca una suluzione assai bona. Forsi u prublema pò esse risolta installendu un pacchettu di lingua o installendu pacchetti di lingua supplementari?

Esperimentu 8

Caricà l'imagine di u sistema - Inglese in modu di auditu.

Cunnettamu à Internet, in i paràmetri di u sistema andate à a sezione "Lingua", selezziunate "Aggiungi lingua", selezziunate a lingua "Russu", cliccate "Avanti", lasciate i paràmetri di stallazione predeterminati, cliccate "Installa", dopu a stallazione. u pacchettu di lingua avemu reboot u sistema, avà nantu à Russified. Scollegate u sistema da Internet, eseguite "Sysprep.bat", selezziunate u puntu 2.

Dopu avè caricatu u sistema, in u snap-in "Gestione di l'urdinatore", crea l'utilizatore "Usuariu", aghjunghje u pacchettu di preparazione, andate à u contu "Usuariu", u multi-kiosk ùn funziona micca.

Esperimentu 9

Pruvemu di russificà u sistema prima di a stallazione, in modu offline. À u listessu tempu, ci sarà un brevi prugramma educativu nantu à a localizazione di a distribuzione.

Pigliu una unità flash cù una distribuzione originale pulita - X21-96381. Serà drive "E". Per muntà l'imaghjini, aghju creatu cartulare: "c:MountInstall", "c:MountWinre", "c:MountBoot". Pigliu un set di pacchetti di localizazione - X21-87814. È in u cartulare "c:Mount" copià i pacchetti da questu: "Microsoft-Windows-Client-Language-Pack_x86_ru-ru.cab", "lp.cab", "WinPE-Setup_ru-ru.cab". Lanciau a cunsola cù diritti di amministratore. Pensu chì più cumandamenti seranu chjaru senza cumentu.

Cumandamenti di localizazione

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

Avviamu da u flash drive, selezziunate a lingua russa è installate u sistema in un discu in biancu. Quandu u sistema vi dumanda di selezziunà una regione, appughjà "Ctrl + Shift + F3". In u snap-in "Gestione di l'urdinatore", crea un utilizatore "Usuariu", aghjunghje un pacchettu di preparazione, andate à u contu "Usuariu", u multi-kiosk ùn funziona micca.

Boot da una unità flash in WinPE. Eseguite u cumandimu "Dism /image:E: /Set-UILang:en-us".

Avviamu in u sistema, pruvate à accede à u contu "Usuariu", u multikiosk funziona.

Apparentemente u prublema ùn hè micca in i metudi di aghjunghje un pacchettu, pruvemu à aghjunghje pacchetti supplementari.

Esperimentu 10

Pigliemu u flash drive chì avemu preparatu in u passu precedente.

Pigliemu u pacchettu "Feat on Demand" - X21-87815. Copià i pacchetti da ellu à u cartulare "c:Mount": «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».

Берем пакет «Feat on Demand RDX Updt» – X21-99781. В папку «c:Mount» копирую из него пакеты: «Microsoft-Windows-RetailDemo-OfflineContent-Content-Package~31bf3856ad364e35~x86~~.cab», « Microsoft-Windows-RetailDemo-OfflineContent-Content-ru-ru-Package~31bf3856ad364e35~x86~~.cab».

Lanciate a cunsola cù diritti di amministratore è eseguite i cumandamenti:

Команды

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

Avviamu da u flash drive, selezziunate a lingua russa è installate u sistema in un discu in biancu. Quandu u sistema vi dumanda di selezziunà una regione, appughjà "Ctrl + Shift + F3". In u snap-in "Gestione di l'urdinatore", crea l'utilizatore "Usuariu", aghjunghje u pacchettu di pruvisione, è accede à u contu "Usuariu". Aghju avutu un schermu neru chì hè appiccicatu per un bellu pezzu, cusì aghju avviatu u sistema.

Eliminate u pacchettu di preparazione, accede cum'è "Usuariu", reboot u sistema, aghjunghje u pacchettu di preparazione, u multikiosk ùn funziona micca.

Boot da una unità flash in WinPE. Eseguite u cumandimu "Dism /image:E: /Set-UILang:en-us".

Avviamu in u sistema, pruvate à accede à u contu "Usuariu", u multikiosk funziona.

Soluzione

Eroi normali. Facenu sempre una volta !

Diversi metudi di installà i pacchetti di localizazione ùn anu micca risolviu u prublema, chì significa chì avete da installà a lingua "en-us" in u primu boot dopu a sigillatura, è cambià i paràmetri di lingua dopu à u primu boot.

Caricà l'imagine di u sistema - Russificatu in modu di auditu.

In u schedariu "Unattend.xml", entre "en-US" in u paràmetru, eseguite "Sysprep.bat", selezziunate u puntu 2 è vede ciò chì avemu avutu. A pantalla di benvenuta hè in inglese, u multi-chiosk funziona. Questu significa chì avete bisognu di aghjunghje un cumandamentu à "Unattend.xml" per cambià a lingua di salutu. È per fà questu, avete bisognu di eseguisce u cumandimu "control intl.cpl,, /f:" indicà u schedariu di cunfigurazione, chì specificarà a copia di i paràmetri attuali à a pantalla di benvenuta. U cuntenutu di u schedariu di cunfigurazione sarà cusì.

<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
      <gs:UserList>
        <gs:User UserID="Current" CopySettingsToSystemAcct="true"/> 
    </gs:UserList>
</gs:GlobalizationServices>

Perchè copià i paràmetri di l'utilizatore attuale, allora u cumandimu deve esse eseguitu dopu chì l'utilizatore hà logged in, chì significa chì avemu bisognu. Ci hè un picculu "ma", l'esekzione si farà dopu chì un utilizatore cù diritti di amministratore accede. È ùn vogliu micca creà un schedariu supplementu chì avaristi bisognu per u cumandamentu per eseguisce bè. Hè megliu implementà a suluzione sana in un unicu schedariu - "Unattend.xml". Per fà questu, avete bisognu di eseguisce un cumandamentu chì crea un schedariu di cunfigurazione. Pensu chì aghju da creà un schedariu di cunfigurazione cù u cumandimu "echo" in l'ambienti "cmd", ma ci vole à scappà i parentesi angulari cun un circunflessu. Quelli. Per creà un schedariu di cunfigurazione, u cumandimu seguitu hè ottenutu.

echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>^<gs:UserList^>^<gs:User UserID="Current" CopySettingsToSystemAcct="true"/^>^</gs:UserList^>^</gs:GlobalizationServices^>>Config.xml

Ma avemu bisognu di mette stu cumandamentu in XML, chì hà u so propiu esigenze per l'usu di caratteri speciali:

Carattere speciale
Valore di rimpiazzamentu

>
&gt;

<
&lt;

&
&amp;

'
&apos;

"
&quot;

In u risultatu, per creà un schedariu di cunfigurazione, avemu u cumandimu seguitu per "FirstLogonCommands".

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

Dopu, eseguimu u cumandimu cù u schedariu di cunfigurazione.

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

Dopu, sguassate u schedariu creatu prima è reboot u sistema. i cambiamenti saranu efficaci dopu un reboot.

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

In u risultatu, aghju finitu cù u seguente schedariu di risposta per sysprep.

Unattend.xml

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="specialize">
        <component name="Microsoft-Windows-Deployment" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <RunSynchronous>
                <RunSynchronousCommand wcm:action="add">
                    <Path>reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f</Path>
                    <Order>1</Order>
                    <Description>Dont show key page</Description>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Path>reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f</Path>
                    <Order>2</Order>
                    <Description>Dont make account</Description>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Path>cmd.exe /c rd %systemdrive%Sysprep /s /q</Path>
                    <Order>3</Order>
                    <Description>Del Folder</Description>
                </RunSynchronousCommand>
            </RunSynchronous>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <AutoLogon>
                <Enabled>true</Enabled>
                <Username>Admin</Username>
            </AutoLogon>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>en-US; ru-RU</InputLocale>
            <SystemLocale>ru-RU</SystemLocale>
            <UILanguage>en-US</UILanguage>
            <UILanguageFallback></UILanguageFallback>
            <UserLocale>ru-RU</UserLocale>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <HideLocalAccountScreen>true</HideLocalAccountScreen>
                <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
                <HideOnlineAccountScreens>true</HideOnlineAccountScreens>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <ProtectYourPC>1</ProtectYourPC>
            </OOBE>
            <FirstLogonCommands>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>cmd.exe /c echo ^&lt;gs:GlobalizationServices xmlns:gs=&quot;urn:longhornGlobalizationUnattend&quot;^&gt;^&lt;gs:UserList^&gt;^&lt;gs:User UserID=&quot;Current&quot; CopySettingsToSystemAcct=&quot;true&quot;/^&gt;^&lt;/gs:UserList^&gt;^&lt;/gs:GlobalizationServices^&gt;&gt;&quot;%TMP%Config.xml&quot;</CommandLine>
                    <Description>CreateConfig</Description>
                    <Order>1</Order>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>control intl.cpl,,/f:&quot;%TMP%Config.xml&quot;</CommandLine>
                    <Description>UseConfig</Description>
                    <Order>2</Order>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>cmd.exe /c del &quot;%TMP%Config.xml&quot; /q&amp;shutdown /r /f /t 00</CommandLine>
                    <Description>DelConfig</Description>
                    <Order>3</Order>
                </SynchronousCommand>
            </FirstLogonCommands>
        </component>
    </settings>

Cuntrollamu...

Caricà l'imagine di u sistema - Russificatu in modu di auditu.

Cambiamu u schedariu Unattend.xml à un novu, eseguite "Sysprep.bat", selezziunate u puntu 2 è vede ciò chì avemu avutu. Quandu u primu boot, a pantalla di benvenuta hè in inglese è u sistema riavvia. A pantalla di benvenuta hè in russa, u multikiosk funziona.

Sì avete qualchì quistione nantu à a stallazione è a licenza Windows 10 IoT Enterprise, per piacè cuntattate: [email prutettu] o à u situ web quarta-embedded.ru.
Pudete truvà risposte à alcune dumande in u nostru wiki o nant'à u nostru canale YouTube

Autore di l'articulu: Vladimir Borisenkov, espertu tecnicu in Quarta Technologies.

Source: www.habr.com