Windows 10 IoT Enterprise 2019 — režim multiosk

Úvod

Windows 10 IoT Enterprise 2019 – marketingové označenie najnovšej verzie Windows 10. Uvoľnenie tejto verzie bolo oznámené v septembri 2018, pričom má verziu 1809, 18 – rok, 09 – mesiac. O novej verzii Windows 10 1809 bolo napísaných mnoho článkov, ale väčšina z nich sa zaoberá rôznymi 'vylepšeniami', 'krásami' a funkciami, ktoré sú žiadané v domácich podmienkach.
V tomto článku sa budeme zaoberať iba funkciami, ktoré môžu byť zaujímavé pre výrobcov zariadení s pevnými účelmi. A to najmä novými možnosťami režimu 'Kiosk'. Taktiež sa dotkneme témy zmien v pomenovaní schém údržby edícií Windows pre podniky.

Starý plán údržby s novým názvom

Začnem s malým vysvetlením, v korporátnom segmente edícií Windows existujú dve schémy údržby, podľa ktorých Windows dostáva aktualizácie. Schémy údržby majú písmenové označenie. V súčasnosti sa tieto vetvy údržby nazývajú LTSC a SAC.

LTSC – označuje Long Term Servicing Channel (s dlhodobou údržbou). Predtým sa tento kanál nazýval LTSB – Long Term Servicing Branch, Microsoft jednoducho zmenil názov kanála údržby, samotná údržba zostala nezmenená.

Taktiež Microsoft zmenil názov vetvy údržby CBB – Current Branch for Business, teraz sa táto vetva údržby nazýva SAC – Semi-Annual Channel. Opäť sa zmenil iba názov.

Ale je potrebné spomenúť, že pre vetvy údržby LTSC a SAC sa používajú rôzne distribúcie Windows.

Niečo o novom režime kiosku v SAC

Ako som už povedal, LTSC a SAC majú rôzne distribúcie. V LTSC nie sú žiadne štandardné univerzálne aplikácie a obchod s aplikáciami, zatiaľ čo v SAC sú. Preto v LTSC nie je prehliadač Edge, ale v SAC je. Ak pri nastavení kiosku vyberiete prehliadač Edge, teraz sú k dispozícii dva režimy:

  1. Ako digitálny znak alebo interaktívny displej
  2. Ako verejný prehliadač

Nebudem sa zastavovať na nastavení týchto režimov, pretože nastavenie je veľmi jednoduché a vykonáva sa v grafickom rozhraní. Stačí vytvoriť používateľa, ktorý nie je členom skupiny 'Administrátori', aktivovať pre neho režim kiosku s použitím EDGE a pozrieť sa na fungovanie týchto režimov.

Kiosk s množstvom aplikácií

Niektorí si myslia, že licencované používanie Windows 10 IoT Enterprise predstavuje prácu len jednou aplikáciou na zariadení, v skutočnosti to tak nie je. Zariadenie by malo byť určené na vykonávanie jedného biznisového úlohy a používateľ nemá mať prístup k pracovnej ploche. Teraz Microsoft sám poskytol nástroj na používanie mnohých aplikácií. Tento režim sa nazýva „multi-app kiosk“, ďalej pre stručnosť ho budem nazývať „multikiosk“. V tomto článku sa pozrieme na nastavenie tohto režimu pomocou balíka zabezpečenia a niektoré vlastnosti tohto režimu.

Trochu o režime „Multikiosk“

Pri prihlásení do účtu používateľa, pre ktorý je nastavený režim multikiosku, systém bude fungovať v režime tabletu. Ponuka „Štart“ sa rozbalí na celú obrazovku, na ktorej sa budú zobrazovať dlaždice aplikácií.

Zoznam hlavných nastavení a možností režimu:

  1. Nastavenie pre mnohých používateľov alebo skupiny
  2. Každému používateľovi alebo skupine je možné prideliť individuálne nastavenia
  3. Možnosť používať univerzálne a klasické aplikácie
  4. Možnosť automatického spustenia jednej z aplikácií po prihlásení používateľa do systému
  5. Práca aplikácií podľa bieleho zoznamu
  6. Prístup k priečinkom podľa bieleho zoznamu

Je potrebné venovať pozornosť bodu 5. Predvolene bude povolená práca len tým aplikáciám, ktoré sú potrebné na fungovanie systému, ostatné aplikácie je potrebné pridať do zoznamu povolených. T.j. teraz nie je potrebné osobitne nastavovať AppLocker. Mimochodom, aby sa predišlo konfliktu nastavení AppLocker-a, v režime multikiosku všetky nastavené pravidlá AppLocker-a nebudú platiť.

V bode 6 je označená dobrá možnosť, ale v súčasnosti je možné udeliť povolenie na zápis len pre priečinok „Downloads“. Režim umožňuje používanie univerzálnych a klasických aplikácií. Všetky nastavenia režimu sú uvedené v XML súbore, v ktorom je možné tiež zadať nastavenia pre kiosk s jednou aplikáciou.

A teraz sa pokúsme to všetko nastaviť...

Čo budeme potrebovať...

  1. V prvom rade budeme potrebovať samotný systém, ktorý podporuje režim multikiosku. Tu si môžete stiahnuť demonštračnú verziu
  2. Návod na nastavenie multikiosku
  3. Akýkoľvek XML editor
  4. Na aplikáciu nastavení multikiosku:
    1. Pre spôsob číslo 1 – ICD, ktorý je súčasťou ADK. ADK môžete stiahnuť tu
    2. Pre spôsob číslo 2 – utilita PsExec. Utilitu môžete stiahnuť tu

Povedal – „Ideme!“

Všetky experimenty budem vykonávať na Windows 10 IoT Enterprise 1809 LTSC x32 komerčná verzia, nie demo verzia. Systém bude bez aktivácie, pretože absencia aktivácie neovplyvňuje funkčnosť systému. Zvolil som 32-bits len preto, že zaberá menej miesta a práca s obrazmi systému bude rýchlejšia.

Krok 1 – inštalácia

Inštalácia Win 10 IoT Enterprise sa nijako nelíši od inštalácie Win 10 Enterprise, preto nebudem popisovať celý proces inštalácie, poviem len o niektorých nuansách.

Pre istotu pripomínam, neinštalujte systém na už nainštalovaný. Keď sa inštalátor opýta na miesto inštalácie systému, odstráňte všetky oddiely na budúcom systémovom disku a uveďte nepartitionovaný disk.

Inštalujeme systém bez pripojenia na internet, aby systém nenačítal nič nadbytočné.

Keďže budeme vytvárať záložné obrazy systému a na tento účel ho budeme uzavierať v audítorskom režime, môžeme ušetriť trochu času tým, že načítame systém v audítorskom režime hneď po inštalácii. Na to, keď vás systém požiada o výber regiónu „Začnime s regiónom. Je to správne“, stačí stlačiť „Ctrl+Shift+F3“.

Krok 2 – vytvárame obraz systému

Keďže budeme experimentovať so systémom a skúšať rôzne nové nastavenia, nie je vylúčené, že niečo nepôjde podľa plánu a bude potrebné vrátiť systém do pôvodného stavu. A na rýchly návrat do pôvodného stavu je potrebné vytvoriť obraz systému. Jediné, čo urobím, je skopírovať „gentlemanský set“ – skript a súbor odpovedí. Všetky súbory mám v priečinku „Sysprep“, ktorý skopírujem do koreňa systémového disku. A samozrejme, podelím sa s vami o tento „gentlemanský set“.

Sysprep.bat – na uzavretie systému.

@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 "‡‡‡Chyba pri vytváraní nového admin účtu "minName%"‡‡Stlačte ľubovoľnú klávesu pre ukončenie skriptu"&pause>nul&exit)

pushd "%~dp0"

cls
call :ShowMessage ‡‡‡‡‡‡‡‡‡‡
echo 1 - Zapečatiť systém v audítorskom režime
echo 2 - Zapečatiť systém v privítacom režime
:Select
set /p Choice="Zadajte číslo položky menu: "
if "%Choice%"=="1" (goto Audit)
if "%Choice%"=="2" (goto OOBE)
echo.&echo Zvolená hodnota nie je platná.&goto Select

exit

:Audit
 call :ShowMessage "‡‡‡‡‡Zapečatenie systému v audítorskom režime"
 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 "‡‡‡‡‡Zapečatenie systému v privítacom režime"
 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 Nezadané meno používateľa&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 Nezadane SID skupiny&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 Chyba pri určení mena skupiny podľa 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

Při spuštění skript zkontroluje existenci účtu "Admin" a v případě potřeby ho vytvoří. Účet bude přidán do skupiny "Administrátoři".

Unattend.xml – súbor odpovedí pre sysprep.

reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f
                    1
                    Nezobrazovať stránku s kľúčom
                
                
                    reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f
                    2
                    Nezriaďovať účet
                
                
                    cmd.exe /c rd %systemdrive%Sysprep /s /q
                    3
                    Odstrániť priečinok
                
            
        
        
            
                true
                Admin
            
        
    
    
        
            en-US; ru-RU
            ru-RU
            ru-RU
            
            ru-RU
        
        
            
                true
                true
                true
                true
                true
                1

Pri zapečatení v režime auditu skript pridá do registra príkaz na ukončenie procesu „sysprep.exe“, aby ste nemuseli manuálne zatvárať okno sysprep pri každom spustení. Pri zapečatení v režime privítania skript odstráni z registra príkaz na zatvorenie okna a sám zmení hodnotu architektúry v odpovedajúcom súbore na aktuálnu. V odpovedajúcom súbore sú obsiahnuté parametre na spustenie systému bez účasti používateľa a príkaz na odstránenie priečinka „Sysprep“ v koreňovom adresári systémového disku.

Teraz zapečatím systém v režime auditu pomocou „Sysprep.bat“ a urobím obraz systému. Obraz systému urobím pomocou DISM a budem snímať obraz iba systémového oddielu. Ak budete snímať obraz iba systémového oddielu, a nie celého disku, nezabudnite skopírovať obsah adresára „WindowsSystem32Recovery“ na prvý oddiel do priečinka „RecoveryWindowsRE“ po nasadení systému. To treba urobiť pred spustením OS, pretože po spustení OS bude priečinok „WindowsSystem32Recovery“ už prázdny.

Krok 3 – rusifikácia systému

Jazykový balík môžete nainštalovať bez pripojenia na internet, ak ho už máte. Ak nie, systém si ho sám stiahne z internetu, keď pridáte jazyk v nastaveniach. Len nezabudnite, že jazykový balík z predchádzajúcich verzií OS nie je vhodný. Pre Windows 10 1809 by mal byť jazykový balík práve pre Windows 10 1809.

Microsoft sa riadi svojim plánom – postupným prechodom nastavení z klasického menu do nového, preto v klasickej ovládacej panely už nenájdete nastavenia na zmenu jazyka a inštaláciu jazykového balíka. Tieto nastavenia sú teraz len v parametroch systému.

V režime auditu sa môžete stretnúť s problémom otvorenia parametrov systému z menu „Štart“, na otvorenie parametrov systému vykonajte príkaz – „ms-settings:“, venujte pozornosť dvojbodke na konci príkazu, bez nej príkaz nebude fungovať. Po jednokom otvorení parametrov systému pomocou tohto príkazu, ich môžete otvoriť pomocou grafického menu.

Ale v parametroch systému môžete nainštalovať jazykový balík, ak je systém pripojený na internet, tam nie je možnosť výberu inštalácie jazykového balíka z lokálneho súboru.

Nebudem popisovať proces lokalizácie systému, pretože by to výrazne zaťažilo článok, najmä keď je proces lokalizácie podrobne popísaný tu. Chcel by som však upozorniť na špeciálnosť zmeny jazyka systému po inštalácii jazykového balíka pomocou konzoly. Táto špeciálnosť je popísaná v rovnakej wiki, na ktorú som dal odkaz skôr, v podsekcii „Pridanie jazyka do zoznamu jazykov“.

Nainštalujem jazykový balík bez pripojenia na internet.

Po úplnej lokalizácii systému určite vytvorte obraz systému.

Krok 4 – inštalácia potrebných aplikácií

Keďže v systémoch LTSB a LTSC nie je obchod s aplikáciami, inštalácia aplikácií z „Microsoft Store“ spôsobuje určité ťažkosti, a to hlavne – sťahovanie aplikácií. Na sťahovanie aplikácií vytvorila spoločnosť „Adguard“ veľmi užitočnú službu – „Adguard Store“, pomocou ktorej je možné získať dočasné odkazy na sťahovanie aplikácií a ich komponentov.

Na inštaláciu aplikácie budete potrebovať súbory s príponami „Appx“ a „AppxBundle“. Pred inštaláciou samotnej aplikácie je potrebné nainštalovať jej komponenty. Zvyčajne je možné komponenty aplikácie intuitívne odlíšiť podľa názvu súboru.

Aby som článok neurobil príliš dlhým, nebudem podrobne popisovať proces inštalácie aplikácií, najmä preto, že k inštalácii existuje podrobný návod. Pridám však ešte jeden spôsob inštalácie aplikácií v aktuálnom používateľskom účte. Aplikácie je možné nainštalovať pomocou programu „App Installer“, ale na inštaláciu aplikácií bude potrebné pripojenie na internet, zato aplikácie je možné nainštalovať dvojitým kliknutím myši a nebudete potrebovať jeho komponenty, všetky potrebné komponenty stiahne a nainštaluje „App Installer“.

A malé pripomenutie, pri inštalácii aplikácie v aktuálnom účte nebude možné zapečatiť systém. Ako nainštalovať aplikácie tak, aby sa mohla zapečatiť sústava, pozrite sa na vyššie uvedený návod. A na overenie funkčnosti multikiosku stačia už existujúce aplikácie.

Krok 5 – vytvorenie konfiguračného súboru pre multikiiosk

A tu sme sa dostali k najzaujímavejšiemu – k nastaveniu režimu kiosku. Pozeráme sa do návod návodu a vidíme. Predovšetkým budeme potrebovať vytvoriť konfiguračný XML súbor, jeho kompletný príklad je možné pozrieť tu.

Začnime s nastavením umiestnenia dlaždíc. Najjednoduchší spôsob vytvorenia XML konfigurácie nastavenia dlaždíc je exportovať ich aktuálny stav.

Najprv pridáme do ponuky Štart dlaždice tých aplikácií, ktoré potrebujeme. Spustíme vyhľadávanie „Win+s“, nájdeme požadovanú aplikáciu, klikneme na ňu pravým tlačidlom myši a vyberieme možnosť „Pripnúť na úvodnú obrazovku“.

Pripol som nasledujúce aplikácie:

  • Poznámkový blok
  • Kalkulačka
  • Internet Explorer
  • Farba
  • WordPad
  • Parametre
  • Bezpečnosť Windows

Posledné dve aplikácie boli pripnuté, pretože v štandardnej dodávke LTSC nie sú iné univerzálne aplikácie. Všimnite si, že dlaždice tradičných aplikácií odkazujú na skratky. Teraz presunutím dlaždíc priamo v ponuke Štart rozdelím pripnuté dlaždice do dvoch skupín. Na vytvorenie novej skupiny dlaždíc presuňte dlaždicu výrazne vyššie alebo nižšie ako ostatné dlaždice; objaví sa intuitívne zrozumiteľný oddeľovač. Môžete pomenovať skupiny podľa vlastného uváženia; umiestnite kurzor myši nad skupinu a keď sa objaví nápis – „Pomenovať skupinu“, kliknite ľavým tlačidlom myši. Prvú skupinu nazvem „Nastavenia“, do ktorej patrí dlaždica „Možnosti“ a „Bezpečnosť Windows“. Druhú skupinu nazvem „Kancelárske aplikácie“, do ktorej budú patriť všetky ostatné dlaždice. Mimochodom, môžete presúvať aj celé skupiny dlaždíc ťahaním za dve pruhy, ktoré sa nachádzajú vpravo hore od názvu skupiny.

Keďže názov na dlaždici „Bezpečnosť Windows“ sa úplne nezmestí, zmením jej veľkosť na „Široká“. Ak chcete zmeniť veľkosť dlaždice,kliknite na ňu pravým tlačidlom myši a vyberte možnosť „Zmeniť veľkosť“.

Po nastavení exportujeme aktuálny stav a vykonáme príkaz v prostredí PowerShell – „Export-StartLayout – path C:SysprepStartLayout.xml“.

Ďalej je najjednoduchšie nevytvárať súbor nastavení sami, ale vzjať príklad súboru отсюда nastavení – kliknite na tlačidlo „Copy“, vložte obsah do textového editora a uložte ako „MultiAppKiosk.xml“. Teraz zmeňte nastavenia podľa svojich potrieb. Na zmenu nastavení pripojených dlaždíc skopírujte celý blok „StartLayoutCollection“ z „StartLayout.xml“ do „MultiAppKiosk.xml“. Na pridanie aplikácií do povolených je potrebné vložiť identifikátory univerzálnych aplikácií do sekcie „AllowedApps“ a do toho istého bloku pridať úplnú cestu k spustiteľným súborom klasických aplikácií, ktorá je uvedená v vlastnostiach skratiek, na ktoré sa odkazujú dlaždice. Pre rýchly prechod k skrátke kliknite pravým tlačidlom na pripnutú dlaždicu a prejdite cez menu „Ďalšie > Prejsť na umiestnenie súboru“. Všimnite si, že na označenie ID univerzálnej aplikácie sa používa parameter „AppUserModelId“, a na označenie úplnej cesty k klasickej aplikácii sa používa parameter „DesktopAppPath“. Ešte jeden malý detail, ak plánujete používať IE v systéme x64, tak v zozname povolených aplikácií je potrebné uviesť dve cesty k spustiteľnému súboru „Program Files\Internet Explorer\iexplore.exe“ a „Program Files (x86)\Internet Explorer\iexplore.exe“.

Prístup k priečinkom nedám, preto odstraňujem sekciu „FileExplorerNamespaceRestrictions“.

Zobrazenie panelu úloh mi neprekáža, preto v sekcii „Taskbar“ nechávam všetko tak, ako je.

V príklade sú uvedené dva profily, ale ja budem mať len jeden profil, preto sekciu s druhým profilom môžem odstrániť. Pred odstránením si všimnite príklad automatického spustenia aplikácie s argumentmi.

V sekcii „Configs“ sú účty viazané na profily, majte na pamäti, že k jednému profilu môže byť priradených viacero účtov. Ale keďže ma zaujíma iba jeden účet, odstránim všetky priradenia okrem prvého – bloky „Config“. V zostávajúcom priradení napíšem meno používateľa „User“.

Mám takýto súbor s parametrami

MultiAppKiosk.xml

<![CDATA[
                    
                    
                      
                        
                          
                            
                            
                          
                          
                            
                            
                            
                            
                            
                          
                        
                      
                    
                  
              ]]>
          
          
      
  
  
      
          User

Keď vytvárate svoje XML súbory, nezabudnite, že každý profil musí mať jedinečný ID, a to nielen v rámci jedného XML súboru, ale aj v jednom OS. Ideálne je vytvoriť nový identifikátor zakaždým, čo môžete urobiť v prostredí PowerShell pomocou príkazu „[guid]::NewGuid()“. A nezabudnite uložiť súbor v kódovaní „UTF-8“, ak bude súbor uložený v kódovaní „ANSI“, pri zostavovaní balíka prípravy dostanete chybu, ak bude v XML súbore cyrilika.

Krok 6 – uplatnenie nastavení viacerých kioskov

Pozrime sa na dva spôsoby uplatnenia nastavení opísaných v konfiguračnom súbore. Prvý – pomocou balíka prípravy, ktorý treba vytvoriť v ICD. Pre niekoho môže byť tento spôsob už známejší. Druhý – pomocou „MDM Bridge WMI Provider“, tento spôsob mi prišiel pohodlnejší.

Spôsob č. 1

Kto nemá ICD, stiahnite si ADK a nainštalujte ho. Inštalácia ADK je veľmi jednoduchá, súbor komponentov môžete nechať na predvolené nastavenia.

Spustíme ICD, klikneme na dlaždicu „Dodatočná príprava“, zadáme názov a priečinok projektu a klikneme na „Ďalej“. V nasledovnom okne vyberieme „Všetky vydania Windows pre stolné počítače“ a klikneme na „Ďalej“. Import balíka prípravy môžeme preskočiť, klikneme na „Hotovo“.

Rozbaľte rozbaľovacie menu „Parametre prostredia behu“, potom rozbaľte podmenu „AssignedAccess“ a vyberte položku „MultiAppAssignedAccessSettings“. V hornej časti strednej sekcie okna ICD kliknite na tlačidlo „Prehľad“ a zadajte umiestnenie XML súboru s nastaveniami. Pre istotu môžete projekt uložiť stlačením „Ctrl+s“. V ľavom hornom rohu ICD vyberte „Export“ v rozbaľovacom menu vyberte položku „Balík prípravy“. Ako vlastníka vyberte „IT administrátor“, ostatné otázky môžete preskočiť kliknutím na „Ďalej“ a na konci kliknite na „Zostaviť“ a „Hotovo“.

V nainštalovanom systéme nezabudnite vytvoriť používateľa „User“, nemôžete ho pridať do skupiny „Administrátori“, inak viaceré kiosky nebudú fungovať. Vytvoril som používateľa v konzole „Správa počítača“ s neobmedzenou platnosťou hesla.

Teraz spúšťame balík na prípravu v predtým nainštalovanom systéme. Po aplikovaní balíka na prípravu sa zmení ponuka Štart a administrátora. V ľavom stĺpci ponuky Štart by mali zmiznúť tlačidlá: „Dokumenty“, „Obrázky“, „Nastavenia“. Ak sa ponuka Štart nezmenila, niečo je v neporiadku. Nainštalovaný balík je možné odstrániť, ak otvoríte okno „Nastavenia > Účty > Prístup k účtu pracovného alebo školského miesta > Pridanie alebo odstránenie balíka na prípravu“.

Ak sa ponuka Štart zmenila, nastavenia boli aplikované na systém, prihláste sa ako používateľ, pre ktorého je nastavený multiterminal a pozrite sa na výsledok.

Spôsob č. 2

Aplikácia nastavení pomocou „MDM Bridge WMI Provider“ opisuje sa tu. Pohodlie tohto spôsobu spočíva v jeho flexibilite a možnosti zbaviť sa množstva ručných operácií potrebných na vytvorenie balíka na prípravu. Tu si každý môže vytvoriť riešenie, ktoré mu vyhovuje. Ja som si vyrobil takúto dvojicu skriptov.

MiltiKiosk.bat – skript na spustenie

@echo off
chcp 1251>nul

if not exist "%~dp0psexec.exe" call :ShowMessage "‡‡‡‡‡‡‡‡‡‡‡‡‡Pre fungovanie skriptu je potrebný súbor psexec.exe‡‡Na ukončenie skriptu stlačte akúkoľvek klávesu"&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 Neboli nájdené žiadne PS súbory začínajúce názvom - "%~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 – hlavný skript

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

Funkcia ShowMessage ($Message='', $Align=0) {
    Try {$Align = [decimal]$Align} Catch {Return 'Pre parameter Align môže byť zadané iba číslo' | 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, 'Chyba pri načítaní objektu nastavení', 2, 'Stlačte "Enter" na ukončenie skriptu') -Align 2; Read-Host; Exit}

Funkcia MainMenu() {
    ShowMessage (13, ' 0 - Odchod', ' 1 - Vybrať XML súbor na inštaláciu', ' 2 - Zobraziť aktuálnu konfiguráciu multi kiosku', ' 3 - Odstrániť nastavenia multi kiosku', 1)
    $local:PromptText = 'Vyberte akciu'
    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, 'Začatie konfigurácie') -Align 2; Write-Host $MultiAppKiosk.Configuration; ShowMessage -Message ('Koniec konfigurácie', 1, 'Na návrat do menu stlačte "Enter"', 1) -Align 2; Read-Host}
            3 {$MultiAppKiosk.Configuration = $Null; Set-CimInstance -CimInstance $MultiAppKiosk; ShowMessage -Message (1, 'Príkaz na odstránenie nastavení bol vykonaný', 1) -Align 2}
            DEFAULT {ShowMessage 'Vybraná hodnota je neplatná'}
        }
        if ($Selections -contains $Select) {Clear-Host; ShowMessage (15, ' 0 - Odchod', ' 1 - Vybrať XML súbor na inštaláciu', ' 2 - Zobraziť aktuálnu konfiguráciu multi kiosku', ' 3 - Odstrániť nastavenia multi kiosku', 1)}
    }
}

Funkcia XMLSelection() {
    Clear-Host

    if (!(Test-Path -Path $PSScriptRoot'XML')) {ShowMessage -Message (13, 'Nenašiel sa adresár', $('"'+$PSScriptRoot+'XML"'), 1, 'Stlačte "Enter" na návrat do predchádzajúceho menu') -Align 2; Read-Host; Return}

    $local:XMLList = @()
    $XMLList += Get-ChildItem -Path $PSScriptRoot'XML' -name -filter '*.xml'
    if ($XMLList.Count -eq  0) {ShowMessage -Message (13, 'Nenašli sa XML súbory v adresári', $('"'+$PSScriptRoot+'XML"'), 1, 'Stlačte "Enter" na návrat do predchádzajúceho menu') -Align 2; Read-Host; Return}

    [int]$local:Indent = 13 - $XMLList.Count \/ 2; if ($Indent -lt 1) {$Indent = 1}
    ShowMessage ($Indent, ' 0 - Vrátiť sa do predchádzajúceho menu')
    for ($i=0; $i -le $XMLList.GetUpperBound(0); $i++) {Write-Host $(' '+($i+1)+' - '+$XMLList[$i])}
    Write-Host
    $local:PromptText = 'Vyberte súbor na inštaláciu'
    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 $('Je zadaný príkaz na aplikáciu nastavení zo súboru '+$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 ('Vybraná hodnota je neplatná')} 
        }
    }
}

MainMenu()

Ak chcete použiť moje riešenie, uložte vyššie uvedené skripty do jednej zložky s ich originálnymi názvami a do tej istej zložky vložte súbor „PsExec.exe“. V tejto zložke vytvorte zložku „XML“ a skopírujte do nej XML súbory pre nastavenie multikiosku. Použijem ten istý súbor ako v prvom spôsobe.

MultiAppKiosk.xml

<![CDATA[
                    
                    
                      
                        
                          
                            
                            
                          
                          
                            
                            
                            
                            
                            
                          
                        
                      
                    
                  
              ]]>
          
          
      
  
  
      
          User

Trochu o špecifikách skriptu. Skript je navrhnutý na používanie XML súborov s kódovaním „UTF8“, ak chcete použiť kódovanie „ANSI“, odstráňte parameter „encoding UTF8“ z parametra čítania súboru. Do zložky „XML“ je potrebné umiestniť XML súbory bez nahrádzania znakov, skript sám nahradí špeciálne znaky zodpovedajúcimi označeniami. Aby ste sa nestratili v GUID-och viazania používateľov na profily, môžete jednoducho uviesť číslo alebo meno používateľa v zložených zátvorkách, všetok obsah v zložených zátvorkách bude nahradený GUID-ami.

Používanie skriptu je veľmi jednoduché, spustíte ho a vyberiete potrebnú možnosť. Na zmenu aktuálnej konfigurácie na novú nie je potrebné odstraňovať aktuálnu, bude prepisovaná. Nezabúdajte vytvárať používateľov, ktorí sú uvedení v konfiguračnom súbore.

Pri prezeraní aktuálnej konfigurácie multikiosku v tej istej relácii, v ktorej bola aplikovaná, sa namiesto špeciálnych znakov zobrazia kombinácie náhradných symbolov. Po zmene relácie (reštartovaní skriptu) sa všetky špeciálne znaky zobrazia v pôvodnej podobe.

Krok 7 – zapečatenie systému

Multikiosk funguje, no a je to, zdalo by sa...

Ak všetko ide podľa plánu, znamená to, že niečo prehliadate.

Nezabúdame, že musíme previesť systém z režimu auditu do uvítacieho režimu. No sme na to pripravení, spúšťame „Sysprep.bat“, vyberáme bod 2, systém sa zapečatí. Zapneme zariadenie, systém sa naštartuje, prihlasujeme sa do používateľského účtu, pre ktorý je nastavený multikiosk, a nemôžeme sa prihlásiť. Po nápise „Vitajte“ sa objaví nápis „Odhlásenie“.

Na začiatku som chcel popísať iba riešenie problému, ale neskôr som sa rozhodol popísať kroky na identifikáciu problému a hľadanie najjednoduchšieho riešenia, pretože určite mnohých čitateľov budú trápiť nejasné pochybnosti – „A ak to bude tak...“. Myslím si, že popis rôznych experimentov vám ušetrí značnú časť času, ak sa rozhodnete nájsť iné riešenie. Aby bola informácia čo najpresnejšia a aby som sa ešte raz presvedčil o absencii akýchkoľvek chýb, popis experimentov budem robiť vo formáte „urobil – zapísal“. T.j. zopakujem popisované experimenty.

Experimenty

Čo sme získali. V systéme sú dva používateľské účty:

„Admin“ – v skupine „Administrátori“
„User“ – v skupine „Používatelia“
V režime auditu multimediálny kiosk fungoval, zapečatený – nefunguje.

Experiment 1

Odstránime nainštalovaný balík prípravy, v konzole „Správa počítača“ odstránime používateľa „User“ a vytvoríme nového používateľa s menom „User“, aplikujeme balík prípravy, prihlásime sa do účtu „User“ – nefunguje. Prihlásime sa pod menom „Admin“, odstránime používateľa „User“ zo skupiny „Používatelia“, pridáme ho do skupiny „Administrátori“, prihlásime sa pod menom „User“ – nefunguje. Prihlásime sa pod menom „Admin“, odstránime balík prípravy s multimediálnym kiosk, prihlásime sa pod menom „User“ – podarilo sa prihlásiť, ale samozrejme režim multimediálneho kiosku nefunguje, pretože bol odstránený balík prípravy.

Experiment 2

Nahrávame obraz systému – lokalizovaný v režime auditu.

Systém sa načítal, stlačíme «Win+r», pretože okno sysprep sa automaticky zavrelo, vykonáme príkaz «sysprep», v otvorenom okne spustíme «sysprep». Nastavenia sysprep v okne: «Prechod do okna uvítania systému (OOBE)», «Príprava na používanie», «Reštart». Stlačíme «OK» a čakáme na uvítanie systému. Odpovedáme na otázky pri prvom načítaní systému: «Pokračovať v zvolenom jazyku?» – «slovenčina»; región – Slovensko; rozloženie klávesnice – slovenská; pridať druhé rozloženie klávesnice – preskočiť; «Poďme vás pripojiť k sieti» – «Zatiaľ preskočiť»; pripojiť sa na internet – nie; licenčná dohoda – prijať; «Kto bude používať tento počítač» – «Test»; vytvorenie hesla – zanechávam pole prázdne; pohodlná práca na rôznych zariadeniach – nie; nastavenia ochrany osobných údajov – prijať. Systém sa načítal, v nástroji «Správa počítača» vytvoríme používateľa menom «User», pridáme balík prípravy. Výsledok – nefunguje.

Experiment 3

Nahrávame obraz systému – lokalizovaný v režime auditu.

Systém sa načítal, pripojíme systém k internetu, vykonáme príkaz «gpedit.msc» a v sekcii «Centrum aktualizácií Windows» zapneme parameter «Povoliť odporúčané aktualizácie prostredníctvom automatických aktualizácií», pre istotu sa reštartujeme. V centre aktualizácií stlačíme «Skontrolovať dostupnosť aktualizácií» a reštartujeme sa, kým nebudú nainštalované všetky aktualizácie. Odpojujeme systém od internetu. Spúšťame «sysprep» v grafickom režime a opakujeme všetky kroky, ktoré sú opísané v predchádzajúcom kroku s iniciovaním nástroja «sysprep» pred pridaním balíka prípravy. Výsledok – nefunguje.

Experiment 4

Nahrávame obraz systému – anglický v režime auditu.

Spúšťame «sysprep» v grafickom režime, zapečaťujeme OS s rovnakými parametrami, ako počas experimentu 2. Pri prvom spustení systému volíme rovnaké parametre ako v experimente 2, s výnimkou regionálnych a jazykových parametrov, pretože slovenský jazyk nie je k dispozícii. Presne tak vytvoríme používateľa «User» a pridáme balík prípravy. Výsledok – funguje. T.j. problém je spojený s lokalizáciou.

Experiment 5

Nahrávame obraz systému – lokalizovaný v režime auditu.

V nástroji «Správa počítača» vytvoríme používateľa «User», pridáme balík prípravy, prihlásime sa do účtu «User», multimediálny prehrávač funguje.

Odhlásime sa z účtu a prihlásime sa pod účtom „Admin“. Spustíme PowerShell s právami administrátora, vykonáme príkaz „Dism /online /Get-Intl“ a vidíme „Jazyk používateľského rozhrania predvolene: en-US“.

Načíta sa z USB kľúča do WinPE, nainštalovaný systém mám na disku E. Vykonáme príkaz „Dism /image:E: /Set-UILang:ru-ru“. Pozrieme sa na výsledok, vykonáme „Dism /image:E: /Get-Intl“ a vidíme „Predvolený jazyk systémového UI: ru-RU“.

Prihlásime sa do systému, vstupujeme do účtu „User“, multifunkčný kiosk nefunguje.

Aby sme presne zafixovali kauzálnu súvislosť vzniku problému, pokúsime sa ešte raz urobiť multifunkčný kiosk funkčným a nefunkčným.

Načíta sa z USB kľúča do WinPE, nainštalovaný systém mám na disku E. Vykonáme príkaz „Dism /image:E: /Set-UILang:en-us“. Pozrieme sa na výsledok, vykonáme „Dism /image:E: /Get-Intl“ a vidíme „Predvolený jazyk systémového UI: en-US“.

Prihlásime sa do systému, vstupujeme do účtu „User“, multifunkčný kiosk funguje.

Načíta sa z USB kľúča do WinPE, nainštalovaný systém mám na disku E. Vykonáme príkaz „Dism /image:E: /Set-UILang:ru-ru“. Pozrieme sa na výsledok, vykonáme „Dism /image:E: /Get-Intl“ a vidíme „Predvolený jazyk systémového UI: ru-RU“.

Prihlásime sa do systému, vstupujeme do účtu „User“, multifunkčný kiosk nefunguje.

T.j. môžeme vidieť jasnú závislosť funkčnosti kiosku od hodnoty predvoleného jazyka používateľského rozhrania. Môžu existovať aj ďalšie faktory, ktoré ovplyvňujú funkčnosť multifunkčného kiosku?

Experiment 6

Pre čistotu experimentu preinštalujeme systém. Nahráme obraz systému – lokalizovaný v audítorskom režime.

Spustíme „sysprep“ v grafickom režime, zapečatíme OS so rovnakými parametrami ako počas experimentu 2. Čakáme na uvítanie OS a odpovedáme na otázky: „Pokračovať v vybranom jazyku?“ – „Angličtina (Spojené štáty)“; región – Rusko; rozloženie klávesnice – Ruské. Ďalej sú všetky parametre vybrané ako v experimente 2.

Pozrieme sa na parametre hodnoty predvoleného jazyka používateľského rozhrania. Vykonáme príkaz „Dism /online /Get-Intl“ a vidíme „Predvolený jazyk systémového UI: en-US“. V správcovskej aplikácii „Správa počítača“ vytvoríme používateľa „User“, pridáme prípravnú sadu, prihlásime sa do účtu „User“, multifunkčný kiosk funguje.

Snažíme sa rozbiť kiosk zmenou predvoleného jazyka používateľského rozhrania. Prihlásime sa do účtu „Test“, ktorý bol vytvorený pri prvom spustení systému a zapneme pre neho automatické prihlasovanie, aby sa systém nenahrával do účtu „User“ hneď. Vykonáme „netplwiz“, vyberieme používateľa „Test“, zrušíme zaškrtávacie políčko „Vyžadovať zadanie používateľského mena a hesla“ a uplatníme parametre.

Načítame z USB kľúča do WinPE. Vykonáme príkaz „Dism /image:E: /Set-UILang:sk-sk“. Sledujeme výsledok, vykonáme „Dism /image:E: /Get-Intl“ a vidíme „Default system UI language: sk-SK“.

Načítame systém, pokúšame sa prihlásiť do účtu „User“, multikiosk funguje. T.j. nedá sa ho zlomiť. Je možné ho takto prinútiť pracovať?

Experiment 7

Nahrávame obraz systému – lokalizovaný v režime auditu.

Spúšťame „Sysprep.bat“, vyberáme položku 2. Načítame systém, v nástroji „Správa počítača“ vytvoríme používateľa „User“, pridáme balík prípravy, prihlásime sa do účtu „User“, multikiosk nefunguje.

Načítame z USB kľúča do WinPE. Vykonáme príkaz „Dism /image:E: /Set-UILang:en-us“. Sledujeme výsledok, vykonáme „Dism /image:E: /Get-Intl“ a vidíme „Default system UI language: en-US“.

Načítame systém, pokúšame sa prihlásiť do účtu „User“, multikiosk nefunguje.

Zjavne, zmenou nastavenia predvoleného jazyka používateľského rozhrania môžeme ovplyvniť funkčnosť multikiosku len vtedy, keď je systém v audítorskom režime alebo pri prvom spustení po zapečatení systému. To znamená, že bude potrebné zapečatiť systém s odpoveďovým súborom, v ktorom bude vybraný systémový jazyk angličtina, a potom zmeniť nastavenia systému, aby rozhranie bolo slovenské. Nie veľmi dobré riešenie. Možno by sa problém dal vyriešiť inštaláciou jazykového balíka alebo ďalších jazykových balíkov?

Experiment 8

Nahrávame obraz systému – anglický v režime auditu.

Pripojíme sa k internetu, v nastaveniach systému prejdeme do sekcie „Language“, vyberieme „Pridať jazyk“, vyberieme jazyk „Slovenčina“, klikneme na „Ďalej“, nastavenia inštalácie necháme predvolené, klikneme na „Inštalovať“, po inštalácii jazykového balíka reštartujeme systém, teraz je slovenčina aktivovaná. Odpojíme systém od internetu, spúšťame „Sysprep.bat“, vyberáme položku 2.

Po spustení systému v nástroji „Správa počítača“ vytvoríme používateľa „User“, pridáme balík prípravy, prihlásime sa do účtu „User“, multikiosk nefunguje.

Experiment 9

Skúsime lokalizovať systém pred inštaláciou, v offline režime. Zároveň to bude stručný prehľad lokalizácie distribúcie.

Zoberiem flash disk s čistým originálnym distribučným súborom – X21-96381. Bude to disk "E". Na pripojenie obrazov vytvorím priečinky: "c:MountInstall", "c:MountWinre", "c:MountBoot". Zoberiem súbor lokalizácie – X21-87814. A do priečinka "c:Mount" skopírujem z neho súbory: "Microsoft-Windows-Client-Language-Pack_x86_sk-sk.cab", "lp.cab", "WinPE-Setup_sk-sk.cab". Spustím príkazový riadok s administrátorskými právami. Myslím, že nasledujúce príkazy budú zrozumiteľné bez ďalších komentárov.

Príkazy lokalizácie

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_sk-sk.cabcode
dism /Image:Installcode /Set-AllIntl:sk-sk
dism /Image:Install /Set-TimeZone:"Central European Standard Time"code

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

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

Spúšťame sa z flash disku, vyberáme slovenský jazyk a inštalujeme systém na čistý disk. Keď systém požiada o výber regiónu, stlačíme "Ctrl+Shift+F3". V nástroji "Správa počítača" vytvoríme používateľa "User", pridáme balík prípravy, prihlásime sa do účtu "User", multikiosk nefunguje.

Spúšťame sa z flash disku do WinPE. Vykonávame príkaz "Dism /image:E: /Set-UILang:en-us".

Spúšťame systém, pokúšame sa prihlásiť do účtu "User", multikiosk funguje.

Zdá sa, že problém nie je v metódach pridania balíka, skúsime pridať ďalšie balíky.

Experiment 10

Zoberieme flash disk, ktorý sme pripravili v predchádzajúcom kroku.

Zoberáme balík "Feat on Demand" – X21-87815. Do priečinka "c:Mount" skopírujem z neho súbory: "Microsoft-Windows-LanguageFeatures-Basic-sk-sk-Package~31bf3856ad364e35~x86~~.cab", "Microsoft-Windows-LanguageFeatures-OCR-sk-sk-Package~31bf3856ad364e35~x86~~.cab", "Microsoft-Windows-LanguageFeatures-Handwriting-sk-sk-Package~31bf3856ad364e35~x86~ ~.cab", "Microsoft-Windows-LanguageFeatures-TextToSpeech-sk-sk-Package~31bf3856ad364e35~x86~~.cab".

Vezmeme balík „Feat on Demand RDX Updt“ – X21-99781. Do zložky „c:Mount“ kopírujem z neho balíky: „Microsoft-Windows-RetailDemo-OfflineContent-Content-Package~31bf3856ad364e35~x86~~.cab“, „Microsoft-Windows-RetailDemo-OfflineContent-Content-sk-sk-Package~31bf3856ad364e35~x86~~.cab“.

Spúšťame konzolu s právami správcu a vykonáme príkazy:

Príkazy

cd c:mount
dism /Mount-Wim /WimFile:e:sourcesinstall.wim /index:1 /MountDir:Install
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-Basic-sk-sk-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-OCR-sk-sk-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-Handwriting-sk-sk-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-TextToSpeech-sk-sk-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-sk-sk-Package~31bf3856ad364e35~x86~~.cab
dism /Unmount-Image /MountDir:Install /Commit

Načítame sa z USB kľúča, vyberáme slovenský jazyk a inštalujeme systém na čistý disk. Keď systém žiada vybrať región, stlačíme „Ctrl+Shift+F3“. V nástroji „Správa počítača“ vytvoríme používateľa „User“, pridáme balík prípravy, prihlásime sa do účtu „User“. Dostával som čiernu obrazovku, ktorá dlhú chvíľu visela, preto som vykonal núdzové reštartovanie systému.

Odstránime balík prípravy, prihlásime sa ako „User“, reštartujeme systém, pridávame balík prípravy, multikiosk nefunguje.

Spúšťame sa z flash disku do WinPE. Vykonávame príkaz "Dism /image:E: /Set-UILang:en-us".

Spúšťame systém, pokúšame sa prihlásiť do účtu "User", multikiosk funguje.

Obchádzanie problému

Normálni hrdinovia. Vždy idú naokolo!

Rôzne spôsoby inštalácie lokalizačných balíkov nevyriešili problém, znamená to, že pri prvom načítaní po zabalení musíme nainštalovať jazyk „en-us“, a po prvom načítaní zmeniť jazykové nastavenia.

Nahrávame obraz systému – lokalizovaný v režime auditu.

V súbore „Unattend.xml“ do parametra zapisujeme „en-US“, spúšťame „Sysprep.bat“, vyberáme bod 2 a sledujeme, čo nám vyšlo. Úvodná obrazovka v anglickom jazyku, multikiosk – funguje. Potrebujeme teda pridať do „Unattend.xml“ príkaz na zmenu jazyka uvítania. Na to je potrebné vykonať príkaz „control intl.cpl,,/f:“ s uvedením konfiguračného súboru, v ktorom bude uvedené kopírovanie aktuálnych parametrov na uvítaciu obrazovku. Obsah konfiguračného súboru bude vyzerať takto.

Keďže budeme kopírovať nastavenia aktuálneho používateľa, musíme z príkaz vykonať až po prihlásení používateľa do systému. To znamená, že budeme potrebovať. Je tu jeden malý problém — vykonávanie bude po prihlásení používateľa s administračnými právami. A nechcel by som vytvárať ďalší súbor, ktorý bude potrebný na úspešné vykonanie príkazu. Radšej celé riešenie zrealizujem v jednom súbore — „Unattend.xml“. Na to stačí vykonať príkaz, ktorý vytvorí konfiguračný súbor. Myslím, že vytvorím konfiguračný súbor pomocou príkazu „echo“ v prostredí „cmd“, avšak v ňom treba escapovať ostré zátvorky pomocou ceduľky. T.j. na vytvorenie konfiguračného súboru vyzerá príkaz takto.

echo ^^^^^^>Config.xml

Ale tento príkaz musíme umiestniť do XML, ktoré má svoje požiadavky na používanie špeciálnych znakov:

Špeciálny znak
Nahradzujúca hodnota

>
>

<
<

&
&

‘
'

“
"

Nakoniec na vytvorenie konfiguračného súboru vyzerá takto príkaz pre „FirstLogonCommands“.

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

Ďalej vykonáme príkaz s použitím konfiguračného súboru.

control intl.cpl,,/f:"%TMP%Config.xml"

Potom odstránime predtým vytvorený súbor a reštartujeme systém, pretože zmeny nadobudnú platnosť po reštarte.

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

Nakoniec som dostal takýto odpovedný súbor pre sysprep.

Unattend.xml

reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f
                    1
                    Skryť stránku s kľúčom
                
                
                    reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f
                    2
                    Nezriadiť účet
                
                
                    cmd.exe /c rd %systemdrive%Sysprep /s /q
                    3
                    Odstrániť priečinok
                
            
        
        
            
                true
                Admin
            
        
    
    
        
            en-US; sk-SK
            sk-SK
            en-US
            
            sk-SK
        
        
            
                true
                true
                true
                true
                true
                1
            
            
                
                    cmd.exe /c echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>^<gs:UserList^>^<gs:User UserID="Current" CopySettingsToSystemAcct="true"/^>^</gs:UserList^>^</gs:GlobalizationServices^>"%TMP%Config.xml"
                    VytvoriťConfig
                    1
                
                
                    control intl.cpl,,/f:"%TMP%Config.xml"
                    PoužiťConfig
                    2
                
                
                    cmd.exe /c del "%TMP%Config.xml" /q&shutdown /r /f /t 00
                    OdstrániťConfig
                    3

Kontrolujeme…

Nahrávame obraz systému – lokalizovaný v režime auditu.

Vymeníme súbor Unattend.xml za nový, spustíme „Sysprep.bat“, vyberieme bod 2 a pozrieme sa, čo sme dostali. Po prvom načítaní je uvítacia obrazovka v anglickom jazyku, systém sa reštartuje. Uvítacia obrazovka je v ruštine, režim multi-kiosku funguje.

Ak máte ďalšie otázky ohľadom nastavenia a licencovania Windows 10 IoT Enterprise, obráťte sa na nás na adrese mse@quarta.ru alebo webovú stránku quarta-embedded.ru.
Odpovede na niektoré otázky môžete nájsť v našej wiki alebo na našom YouTube kanáli

Autor článku: Borisenkov Vladimír, technický expert spoločnosti Kvartra Technológie.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster