Windows 10 IoT Enterprise 2019 - Multikiosk-modus

Innledning

Windows 10 IoT Enterprise 2019 er markedsføringsnavnet for neste utgivelse av Windows 10. Utgivelsen av denne versjonen ble annonsert i september 2018, henholdsvis, den har versjon 1809, 18 er året, 09 er måneden. Mange artikler er skrevet om den nye utgivelsen av Windows 10 1809, men de fleste av dem er viet til forskjellige "buer", "skjønnheter" og forskjellige funksjoner som er etterspurt hjemme.
Denne artikkelen vil bare diskutere funksjonalitet som kan være etterspurt blant produsenter av enheter med faste formål. Nemlig om de nye egenskapene til "Kiosk" -modusen. Temaet endring av navn på tjenesteordninger for Windows-utgaver av bedriftssegmentet vil også bli berørt.

Gammel serviceordning med nytt navn

La meg starte med en kort forklaring: I bedriftssegmentet av Windows-utgaver er det to tjenesteordninger som Windows mottar oppdateringer i henhold til. Servicediagrammer har bokstavbetegnelse. For øyeblikket heter tjenestegrenene LTSC og SAC.

LTSC står for Langsiktig servicekanal (med langsiktig vedlikehold). Tidligere ble en slik kanal kalt LTSB - Long Term Servicing Branch. Microsoft endret ganske enkelt navnet på tjenestekanalen, selve tjenesten forble den samme.

Microsoft endret også navnet på tjenestegrenen CBB - Current Branch for Business, nå heter denne tjenestegrenen SAC - Semi-årlig kanal. Igjen, bare navnet har endret seg.

Men det bør nevnes at LTSC- og SAC-servicegrenene bruker forskjellige Windows-distribusjoner.

Litt om den nye kioskmodusen hos SAC

Som jeg allerede har sagt, har LTSC og SAC forskjellige distribusjoner. LTSC har ikke standard universelle apper eller en appbutikk, men det har SAC. Følgelig har ikke LTSC en Edge-nettleser, men SAC har det. Hvis du velger Edge-nettleseren når du setter opp en kiosk, er to moduser tilgjengelige nå:

  1. Som et digitalt skilt eller interaktiv skjerm
  2. Som en offentlig nettleser

Jeg vil ikke dvele ved å sette opp disse modusene, fordi... Oppsettet er veldig enkelt og gjøres i et grafisk grensesnitt. Bare opprett en bruker som ikke er medlem av administratorgruppen, aktiver kioskmodus for ham ved å bruke EDGE og se hvordan disse modusene fungerer.

Kiosk med mange applikasjoner

Noen mennesker tror at lisensiert bruk Windows 10 IoT Enterprise innebærer drift av bare ett program på enheten, faktisk er dette ikke tilfelle. Enheten må være utformet for å utføre en enkelt forretningsoppgave, og brukeren må ikke ha tilgang til et skrivebord. Nå har Microsoft selv gitt verktøyet til å bruke mange applikasjoner. Denne modusen kalles "multi-app kiosk"; heretter, for korthets skyld, vil jeg kalle den "multikiosk". I denne artikkelen vil vi se på å sette opp denne modusen ved hjelp av programvarepakken og noen av funksjonene i denne modusen.

Litt om Multikiosk-modus

Når du logger på en brukerkonto som multi-kiosk-modus er konfigurert for, vil systemet fungere i nettbrettmodus. Start-menyen utvides til full skjerm, og viser applikasjonsfliser.

Liste over grunnleggende innstillinger og modusfunksjoner:

  1. Oppsett for flere brukere eller grupper
  2. Hver bruker eller gruppe kan tildeles individuelle innstillinger
  3. Evne til å bruke universelle og klassiske applikasjoner
  4. Muligheten til å automatisk starte en av applikasjonene når brukeren logger på
  5. Hvitelistede applikasjoner
  6. Tilgang til mapper ved hjelp av en hvit liste

Det er verdt å ta hensyn til punkt 5. Som standard vil bare de applikasjonene som er nødvendige for at systemet skal fungere, få lov til å fungere, andre applikasjoner må legges til listen over tillatte. De. Nå trenger du ikke konfigurere AppLocker separat. For å unngå konflikter med AppLocker-innstillinger, i multi-kiosk-modus, vil ikke alle konfigurerte AppLocker-regler gjelde.

Punkt 6 indikerer et godt alternativ, men for øyeblikket er det bare mulig å gi skrivetillatelse til mappen "Nedlastinger". Modusen lar deg bruke universelle og klassiske applikasjoner. Alle modusinnstillinger er spesifisert i en XML-fil, der du også kan spesifisere innstillinger for en enkelt programkiosk.

La oss nå prøve å sette opp alt...

Hva trenger vi...

  1. Først av alt trenger vi selve systemet, som støtter multikiosk-modus. Her kan du laste ned demoversjon
  2. Instruksjoner for å sette opp en multikiosk
  3. Enhver XML-editor
  4. Slik bruker du multikiosk-innstillinger:
    1. For metode nr. 1 - ICD, som er en del av ADK. ADK er mulig Last ned her
    2. For metode nr. 2 - PsExec-verktøyet. Nytten kan være Last ned her

Han sa - "La oss gå!"

Jeg vil utføre alle eksperimenter på Windows 10 IoT Enterprise 1809 LTSC x32 kommersiell versjon, ikke en demoversjon. Systemet vil ikke aktiveres pga mangel på aktivering påvirker ikke funksjonaliteten til systemet. Jeg tok 32 biter bare fordi det tar mindre plass og det vil være raskere å jobbe med systembilder.

Trinn 1 – installasjon

Å installere Win 10 IoT Enterprise er ikke forskjellig fra å installere Win 10 Enterprise, så jeg vil ikke beskrive hele installasjonsprosessen, jeg vil bare snakke om noen av nyansene.

Bare i tilfelle, la meg minne deg på, ikke installer systemet på toppen av det installerte. Når installasjonsprogrammet spør om installasjonsplasseringen til systemet, slett alle partisjoner på den fremtidige systemdisken og spesifiser en upartisjonert disk.

Vi installerer systemet uten internettforbindelse slik at systemet ikke trekker opp noe unødvendig.

Fordi Vi vil lage sikkerhetskopier av systemet og for dette vil vi forsegle det i revisjonsmodus, så kan du spare litt tid ved å laste systemet i revisjonsmodus umiddelbart etter installasjon. For å gjøre dette, når systemet ber deg velge en region "La oss starte med region. Er dette riktig" bare trykk "Ctrl+Shift+F3".

Trinn 2 - lag et systembilde

Fordi vi vil håne systemet og prøve forskjellige nye innstillinger, det er mulig at noe vil gå galt og vi må returnere systemet til sin opprinnelige tilstand. Og for raskt å gå tilbake til sin opprinnelige tilstand, må du lage et systembilde. Det eneste jeg vil gjøre er å kopiere "gentleman's kit" - manuset og svarfilen. Alle filene mine ligger i "Sysprep"-mappen, som jeg kopierer til roten på systemdisken. Og selvfølgelig vil jeg dele dette "herresettet" med deg.

Sysprep.bat – for å forsegle systemet.

@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

Når det lanseres, vil skriptet se etter tilstedeværelsen av "Admin"-kontoen og opprette en hvis den mangler. Kontoen legges til i Administratorgruppen.

Unattend.xml – svarfil for 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>

Ved forsegling i revisjonsmodus vil skriptet legge til en kommando til registret for å avslutte "sysprep.exe"-prosessen for ikke å lukke sysprep-vinduet manuelt hver gang. Når forseglet i hallo-modus, vil skriptet fjerne kommandoen for å lukke vinduet fra registret, og selv endre arkitekturverdien i svarfilen til den gjeldende. Svarfilen inneholder parametere for oppstart av systemet uten brukerinteraksjon og en kommando for å slette "Sysprep"-mappen i roten av systemstasjonen.

Nå vil jeg forsegle systemet i revisjonsmodus ved å bruke "Sysprep.bat" og ta et bilde av systemet. Jeg vil avbilde systemet ved hjelp av DISM og vil bare avbilde systemvolumet. Hvis du bare vil avbilde systemvolumet, og ikke hele disken, så ikke glem å kopiere innholdet i "WindowsSystem32Recovery"-katalogen til det første volumet inn i "RecoveryWindowsRE"-mappen etter å ha distribuert systemet. Dette må gjøres før du laster inn operativsystemet. etter at operativsystemet er lastet, vil "WindowsSystem32Recovery"-katalogen allerede være tom.

Trinn 3 – Russifisering av systemet

Språkpakken kan installeres uten Internett-tilkobling hvis du har denne pakken. Hvis ikke, vil systemet selv laste det ned fra Internett når du legger til språket i innstillingene. Du trenger bare ikke ta språkpakken fra tidligere versjoner av operativsystemet. For Windows 10 1809 må det være en språkpakke spesifikt for Windows 10 1809.

Microsoft følger planen sin om å gradvis overføre innstillinger fra den klassiske menyen til den nye, så i det klassiske kontrollpanelet finner du ikke lenger innstillinger for å endre språk og installere en språkpakke. Disse innstillingene er nå bare i systemparameterne.

I revisjonsmodus kan du støte på et problem med å åpne systeminnstillinger fra Start-menyen; for å åpne systeminnstillinger, kjør kommandoen - "ms-settings:", vær oppmerksom på kolon på slutten av kommandoen, uten det vil kommandoen ikke fungerer. Etter å ha åpnet systemparametrene én gang med denne kommandoen, kan den åpnes ved hjelp av den grafiske menyen.

Men i systeminnstillingene kan du installere en språkpakke hvis systemet er koblet til Internett, det er ingen mulighet for å velge å installere en språkpakke fra en lokal fil.

Jeg vil ikke beskrive prosessen med å lokalisere systemet fordi... dette vil komplisere artikkelen betydelig, spesielt siden lokaliseringsprosessen er detaljert beskrevet her. Men jeg vil gjerne trekke oppmerksomheten din til det særegne ved å endre systemspråket etter å ha installert en språkpakke ved hjelp av konsollen. Denne funksjonen er beskrevet i den samme wikien som jeg ga en lenke til tidligere, i underdelen "Legge til et språk i listen over språk".

Jeg vil installere språkpakken uten internettforbindelse.

Etter fullstendig lokalisering av systemet, sørg for å lage et bilde av systemet.

Trinn 4 - Installer de nødvendige programmene

Fordi Siden LTSB- og LTSC-systemer ikke har en applikasjonsbutikk, forårsaker installasjon av applikasjoner fra Microsoft Store noen vanskeligheter, nemlig nedlasting av applikasjonen. For å laste ned applikasjoner har Adguard-selskapet laget en veldig praktisk tjeneste - "Adguard Store", som du kan få midlertidige nedlastingskoblinger for applikasjoner og deres komponenter.

For å installere applikasjonen trenger du filer med utvidelsene "Appx" og "AppxBundle". Før du installerer selve applikasjonen, må du installere komponentene. Som regel kan komponenter fra en applikasjon intuitivt skilles ut med filnavnet.

For ikke å gjøre artikkelen for lang, vil jeg ikke beskrive i detalj prosessen med å installere applikasjoner, spesielt siden det er informasjon om installasjon detaljert instruksjon. Men jeg vil legge til en annen måte å installere programmer på din nåværende konto. Applikasjoner kan installeres ved hjelp av programmet "App Installer", men for å installere applikasjoner trenger du en Internett-tilkobling, men applikasjoner kan installeres med et dobbeltklikk og du trenger ikke komponentene, alle nødvendige komponenter vil lastes ned og installeres "App Installer".

Og en liten påminnelse, når du installerer applikasjonen på gjeldende konto, vil du ikke kunne forsegle systemet. Hvordan installere applikasjoner slik at du kan forsegle systemet, se instruksjonene ovenfor. Og for å sjekke driften av multikiosken, er eksisterende applikasjoner ganske tilstrekkelig.

Trinn 5 – opprette en konfigurasjonsfil for multikiosken

Nå kommer vi til den mest interessante delen - å sette opp kioskmodus. La oss se på instruksjon i henhold til innstillingene vi ser. Først av alt må vi lage en XML-konfigurasjonsfil, et fullstendig eksempel på dette kan finnes her. se her.

La oss starte med å sette opp flisoppsettet. Den enkleste måten å lage en tilpasningskonfigurasjon for XML-fliser på er eksportere deres nåværende tilstand.

Først av alt, la oss legge til fliser av applikasjonene vi trenger til Start-menyen. Ring opp søket "Win+s", finn ønsket applikasjon, høyreklikk på det og velg "Pin to Start Screen".

Jeg har festet følgende apper:

  • Notisbok
  • Kalkulator
  • Internet Explorer
  • Paint
  • WordPad
  • Parametere
  • Windows -sikkerhet

De to siste applikasjonene ble festet fordi... Det er rett og slett ingen andre universelle applikasjoner i standard LTSC-pakken. Merk at skrivebordsfliser lenker til snarveier. Nå, ved å flytte flisene direkte i Start-menyen, vil jeg dele de festede flisene i to grupper. For å lage en ny gruppe med fliser, dra en flis betydelig høyere eller lavere enn andre fliser, som vil fremheve en intuitiv skillelinje. Du kan navngi gruppene etter eget skjønn; for å gjøre dette, plasser musepekeren over gruppen, og når inskripsjonen "Nevn gruppen" vises, klikker du venstre museknapp. Jeg vil kalle den første gruppen "Innstillinger", den vil inkludere flisene "Innstillinger" og "Windows Security". Jeg vil kalle den andre gruppen "Office Applications", som vil inkludere alle de andre flisene. Du kan forresten flytte hele grupper med fliser ved å dra dem ved å bruke de to stripene som er plassert øverst til høyre i gruppenavnet.

Fordi På "Windows Security"-flisen passer ikke navnet helt, jeg vil endre størrelsen til "Wide". For å endre størrelsen på en flis, høyreklikk på flisen og velg "Endre størrelse".

Etter konfigurasjon eksporterer vi gjeldende tilstand og utfører kommandoen i PowerShell-miljøet - "Export-StartLayout - path C:SysprepStartLayout.xml".

Deretter er den enkleste måten ikke å lage innstillingsfilen selv, men ta en eksempelfil herfra innstillinger – klikk på "Kopier", lim inn innholdet i notisblokk og lagre som "MultiAppKiosk.xml". Nå endrer vi innstillingene til våre egne. For å endre innstillingene for vedlagte fliser, kopier hele "StartLayoutCollection"-blokken fra "StartLayout.xml" til "MultiAppKiosk.xml". For å legge til applikasjoner til de tillatte, må du sette inn universelle applikasjonsidentifikatorer i delen "Tillatte apper" og i samme blokk legge til hele banen til de kjørbare filene til klassiske applikasjoner, som er spesifisert i egenskapene til snarveiene som fliser refererer. For raskt å komme til en snarvei, høyreklikk på en festet flis og gå til Mer > Gå til filplassering. Merk at "AppUserModelId"-parameteren brukes til å spesifisere Universal App-ID, og ​​"DesktopAppPath"-parameteren brukes til å spesifisere hele banen til skrivebordsapplikasjonen. Og en liten nyanse til, hvis du planlegger å bruke IE på et x64-system, må du i listen over tillatte applikasjoner spesifisere to baner for den kjørbare filen "Program FilesInternet Exploreriexplore.exe" og "Program Files (x86)Internet Exploreriexplore. exe".

Jeg vil ikke gi tilgang til mapper, så jeg sletter delen "FileExplorerNamespaceRestrictions".

Å vise oppgavelinjen plager meg ikke, så jeg lar alt være som det er i delen "Oppgavelinje".

I eksemplet er det spesifisert to profiler, men jeg vil kun ha én profil, så seksjonen med den andre profilen kan slettes. Før du avinstallerer, vær oppmerksom på eksemplet med automatisk start av et program med argumenter.

I "Konfigurasjoner"-delen er kontoer knyttet til profiler; vær oppmerksom på at flere kontoer kan kobles til én profil. Men fordi Jeg er bare interessert i én konto, så vil jeg slette alle bindinger bortsett fra den første - "Config"-blokkene. I den gjenværende bindingen vil jeg skrive brukernavnet "Bruker".

Jeg har denne filen med parametere

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>

Når du lager XML-konfigurasjonsfilene, ikke glem at hver profil må ha en unik ID, og ​​ikke bare innenfor én XML-fil, men innenfor ett OS. De. Ideelt sett, for å unngå forvirring, kan du opprette en ny identifikator hver gang; dette kan gjøres i PowerShell-miljøet ved å bruke kommandoen "[guid]::NewGuid()". Og sørg for å lagre filen i "UTF-8"-koding; hvis filen er lagret i "ANSI"-koding, vil du motta en feilmelding når du bygger forberedelsespakken hvis XML-filen inneholder kyrillisk.

Trinn 6 – bruk av multikiosk-innstillinger

La oss se på to måter å bruke innstillingene beskrevet i konfigurasjonsfilen på. Den første er gjennom en klargjøringspakke, som må opprettes i ICD. For noen vil kanskje denne metoden være mer kjent. Den andre er å bruke "MDM Bridge WMI Provider", denne metoden virket mer praktisk for meg.

Metode # 1

Hvem har ikke en ICD? last ned ADK og installere. Å installere ADK er veldig enkelt; settet med komponenter kan stå som standard.

Start ICD, klikk på flisen "Avansert forberedelse", spesifiser navnet og mappen til prosjektet og klikk "Neste". I det neste vinduet velger du "Alle utgaver av Windows-skrivebordet" og klikker på "Neste". Du kan hoppe over import av forberedelsespakken; klikk på "Fullfør".

Utvid rullegardinmenyen "Runtime Settings", utvid deretter "AssignedAccess"-undermenyen og velg "MultiAppAssignedAccessSettings". Øverst i den midtre delen av ICD-vinduet, klikk på "Bla gjennom"-knappen og angi plasseringen av XML-filen med innstillingene. Bare i tilfelle kan du lagre prosjektet ved å trykke "Ctrl+s". I øvre venstre del av ICD-en, velg "Eksporter" og velg "Provisioning Package" fra rullegardinmenyen. Som eier, velg "IT-administrator"; alle andre spørsmål kan hoppes over ved å klikke på "Neste" og på slutten klikker du på "Bygg" og "Fullfør".

I det installerte systemet, ikke glem å opprette en bruker "Bruker"; han kan ikke legges til i gruppen "Administratorer", ellers vil ikke multikiosken fungere. Jeg opprettet en bruker i Computer Management med et passord som aldri utløper.

Nå kjører vi forberedelsespakken på det tidligere installerte systemet. Etter å ha tatt i bruk forberedelsespakken, endres Start-menyen og administratormenyen. I venstre startkolonne skal knappene forsvinne: "Dokumenter", "Bilde", "Alternativer". Hvis startmenyen ikke har endret seg, har noe gått galt. En installert pakke kan fjernes ved å åpne vinduet Innstillinger > Kontoer > Arbeids- eller skolekontotilgang > Legg til eller fjern klargjøringspakke.

Hvis startmenyen er endret, blir innstillingene brukt på systemet, logg på som brukeren som multikiosken er konfigurert for og se på resultatet.

Metode # 2

Bruke innstillinger med "MDM Bridge WMI Provider" beskrevet her. Det praktiske med denne metoden er dens fleksibilitet i bruk og evnen til å kvitte seg med mange manuelle operasjoner som er nødvendige for å lage en forberedelsespakke. Her kan alle ta en avgjørelse for seg selv som vil være praktisk for dem. Jeg laget et par manus til meg selv.

MiltiKiosk.bat – lanseringsskript

@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 – hovedskript

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

Hvis du vil bruke løsningen min, lagrer du de ovennevnte skriptene med deres originale navn i én mappe og legger "PsExec.exe"-filen i samme mappe. I samme mappe oppretter du en "XML"-mappe og kopierer XML-filene for å konfigurere multikiosken til den. Jeg vil bruke samme fil som i den første metoden.

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>

Litt om funksjonene i manuset. Skriptet er designet for å bruke XML-filer med "UTF8"-koding; hvis du vil bruke "ANSI"-koding, fjern deretter parameteren "encoding UTF8" fra fillesingsalternativet. Du må plassere XML-filer i "XML"-mappen uten å erstatte tegn; selve skriptet vil erstatte spesialtegn med de riktige betegnelsene. For ikke å bli forvirret i GUIDene for å koble brukere til profiler, kan du ganske enkelt angi brukernummeret eller navnet i krøllete klammeparenteser; alt innhold i krøllete klammeparenteser vil bli erstattet med GUIDs.

Å bruke skriptet er veldig enkelt, bare kjør det og velg ønsket element. For å endre gjeldende konfigurasjon til en ny, er det ikke nødvendig å slette den nåværende, den vil bli overskrevet. Ikke glem å opprette brukere som er spesifisert i konfigurasjonsfilen.

Når du ser på den gjeldende multikiosk-konfigurasjonen i samme sesjon som den ble brukt i, i stedet for spesialtegn, vil kombinasjoner av erstatningstegn vises. Etter å ha endret økten (omstart av skriptet), vil alle spesialtegn vises i sin opprinnelige form.

Trinn 7 - Forsegling av systemet

Multikiosken fungerer, vel, det er alt, ser det ut til...

Hvis alt går etter planen, så merker du ikke noe.

Ikke glem at vi fortsatt må bytte systemet fra revisjonsmodus til velkomstmodus. Vel, vi er klare for dette, vi starter "Sysprep.bat", velg punkt 2, systemet er forseglet. Vi slår på enheten, systemet starter, vi logger på brukerkontoen som multikiosken er konfigurert for, men vi kan ikke logge på. Etter "Velkommen"-meldingen vises meldingen "Logg ut".

Først ønsket jeg bare å beskrive løsningen på problemet, men senere bestemte jeg meg for å beskrive trinnene for å identifisere problemet og finne den enkleste løsningen fordi... Sikkert mange lesere vil bli plaget av vage tvil - "Hva om det er slik ...". Jeg tror at det å beskrive de ulike eksperimentene vil spare deg betydelig tid hvis du vil finne en annen løsning. For å gjøre informasjonen så nøyaktig som mulig, og for nok en gang å forsikre meg om at det ikke er noen feil, vil jeg beskrive eksperimentene i formatet «ferdig og registrert». De. Jeg vil gjøre de beskrevne eksperimentene igjen.

eksperimenter

Hva gjorde vi? Det er to kontoer i systemet:

"Admin" - i "Administratorer"-gruppen
«Bruker» – i «Brukere»-gruppen
I revisjonsmodus fungerte multikiosken, men når den ble forseglet, fungerte den ikke.

Eksperiment 1

Vi sletter den installerte forberedelsespakken, i "Computer Management" snapin-modulen sletter vi brukeren "Bruker" og oppretter en ny bruker med navnet "Bruker", bruker forberedelsespakken, gå til "Bruker" -kontoen - det gjør det ikke fungerer. Vi går under navnet «Admin», fjerner brukeren «Bruker» fra «Brukere»-gruppen, legger den til i «Administratorer»-gruppen, går under navnet «Bruker» - det fungerer ikke. Vi logger inn under navnet "Admin", sletter forberedelsespakken med multikiosken, logger inn under navnet "Bruker" - vi klarte å logge inn, men selvfølgelig fungerer ikke multikiosk-modusen pga. Klargjøringspakken er fjernet.

Eksperiment 2

Vi laster opp systembildet - Russified i revisjonsmodus.

OS har lastet, trykk "Win+r", fordi Sysprep-vinduet vårt har lukket seg automatisk, kjør "sysprep"-kommandoen og kjør "sysprep" i vinduet som åpnes. Sysprep-innstillinger i vinduet: "Gå til systemvelkomstvinduet (OOBE)", "Forbereder for bruk", "Start på nytt". Klikk "OK" og vent på OS-hilsenen. Vi svarer på spørsmålene når systemet starter opp for første gang: "Fortsett på valgt språk?" - "russisk"; region – Russland; tastaturoppsett – russisk; legg til et ekstra tastaturoppsett - hopp over; "La oss koble deg til nettverket" - "Hopp over nå"; koble til Internett - nei; lisensavtale - godta; "Hvem vil bruke denne datamaskinen" - "Test"; opprette et passord - la feltet stå tomt; Praktisk betjening på forskjellige enheter – nei; Personverninnstillinger – godta. OS har lastet inn, i snapin-modulen "Computer Management" oppretter vi en bruker med navnet "Bruker", legger til forberedelsespakken. Resultatet er at det ikke fungerer.

Eksperiment 3

Vi laster opp systembildet - Russified i revisjonsmodus.

OS har lastet, koble systemet til Internett, kjør kommandoen "gpedit.msc" og i "Windows Update"-delen aktiver alternativet "Aktiver anbefalte oppdateringer gjennom automatiske oppdateringer", start på nytt i tilfelle. I oppdateringssenteret, klikk "Se etter oppdateringer" og start på nytt til alle oppdateringer er installert. Koble systemet fra Internett. Vi starter "sysprep" i grafisk modus og gjentar alle trinnene beskrevet i forrige trinn fra å kjøre "sysprep"-verktøyet til å legge til forberedelsespakken. Resultatet er at det ikke fungerer.

Eksperiment 4

Vi laster opp systembildet - engelsk i revisjonsmodus.

Vi lanserer "sysprep" i grafisk modus, forsegler operativsystemet med de samme parameterne som under eksperiment 2. Når systemet starter opp, velger vi de samme parameterne som i eksperiment 2, med unntak av regionale og språklige parametere fordi Det er ikke noe russisk språk. På samme måte oppretter du en bruker "Bruker" og legger til en klargjøringspakke. Resultatet er at det fungerer. De. Problemet er relatert til lokalisering.

Eksperiment 5

Vi laster opp systembildet - Russified i revisjonsmodus.

I snapin-modulen "Computer Management", opprett en bruker "Bruker", legg til en forberedelsespakke, gå til "Bruker"-kontoen, multi-kiosken fungerer.

Logg ut av kontoen din og logg på under "Admin"-kontoen. Vi starter PowerShell med administratorrettigheter, utfører kommandoen "Dism /online /Get-Intl" og se "Standard brukergrensesnittspråk: en-US".

Vi starter opp fra flash-stasjonen til WinPE, det utplasserte operativsystemet er på stasjonen min E. Vi utfører kommandoen "Dism /image:E: /Set-UILang:ru-ru". Vi ser på resultatet, kjører "Dism /image:E: /Get-Intl" og ser "Standard system UI-språk: ru-RU".

Vi starter opp i systemet, logger på "Bruker" -kontoen, multikiosken fungerer ikke.

For å tydelig fastslå årsak-og-virkning-forholdet til problemet, la oss prøve igjen å få multi-kiosken til å fungere og ikke-fungerende.

Vi starter opp fra flash-stasjonen til WinPE, det utplasserte operativsystemet er på stasjonen min E. Vi utfører kommandoen "Dism /image:E: /Set-UILang:en-us". Vi ser på resultatet, kjører "Dism /image:E: /Get-Intl" og ser "Standard systemgrensesnittspråk: en-US".

Vi starter opp i systemet, logger på "Bruker" -kontoen, multikiosken fungerer.

Vi starter opp fra flash-stasjonen til WinPE, det utplasserte operativsystemet er på stasjonen min E. Vi utfører kommandoen "Dism /image:E: /Set-UILang:ru-ru". Vi ser på resultatet, kjører "Dism /image:E: /Get-Intl" og ser "Standard system UI-språk: ru-RU".

Vi starter opp i systemet, logger på "Bruker" -kontoen, multikiosken fungerer ikke.

De. du kan se en klar avhengighet av kioskens ytelse på standard brukergrensesnittspråk. Kanskje det er noen andre faktorer som påvirker ytelsen til multikiosken?

Eksperiment 6

For forsøkets renhet fyller vi systemet på nytt. Vi laster opp systembildet - Russified i revisjonsmodus.

Vi starter "sysprep" i grafisk modus, forsegler operativsystemet med de samme parameterne som under eksperiment 2. Vi venter på at OS skal hilse på oss og svare på spørsmålene: "Fortsett på valgt språk?" - "Engelsk, forente stater)"; region – Russland; Tastaturoppsett – russisk. Videre ble alle parametere valgt som i eksperiment 2.

La oss se på standardspråkinnstillingene for brukergrensesnittet. Vi utfører kommandoen "Dism /online /Get-Intl" og ser "Standard systemgrensesnittspråk: en-US". I snapin-modulen "Computer Management", opprett en bruker "Bruker", legg til en forberedelsespakke, gå til "Bruker"-kontoen, multi-kiosken fungerer.

Vi prøver å bryte kiosken ved å endre standardspråket for brukergrensesnittet. Vi går inn i "Test"-brukeren, som ble opprettet da systemet startet opp og aktiverer automatisk pålogging for den slik at systemet ikke starter opp i "Bruker"-kontoen med en gang. Kjør "netplwiz", velg "Test"-brukeren, fjern merket for "Krev brukernavn og passord" og bruk parametrene.

Start opp fra en flash-stasjon til WinPE. Utfør kommandoen "Dism /image:E: /Set-UILang:ru-ru". Vi ser på resultatet, kjører "Dism /image:E: /Get-Intl" og ser "Standard system UI-språk: ru-RU".

Vi starter opp i systemet, prøv å logge på "Bruker" -kontoen, multikiosken fungerer. De. den kan ikke brytes. Er det mulig å få det til å fungere på denne måten?

Eksperiment 7

Vi laster opp systembildet - Russified i revisjonsmodus.

Vi starter «Sysprep.bat», velger punkt 2. Vi starter opp i systemet, oppretter brukeren «Bruker» i snapin-modulen «Computer Management», legger til forberedelsespakken, går til «Bruker»-kontoen, multi- kiosken fungerer ikke.

Start opp fra en flash-stasjon til WinPE. Utfør kommandoen "Dism /image:E: /Set-UILang:en-us". Vi ser på resultatet, kjører "Dism /image:E: /Get-Intl" og ser "Standard systemgrensesnittspråk: en-US".

Vi starter opp i systemet, prøv å logge på "Bruker" -kontoen, multikiosken fungerer ikke.

Det viser seg at ved å endre standard språkinnstilling for brukergrensesnittet, kan du bare påvirke ytelsen til multikiosken når systemet er i revisjonsmodus eller ved første oppstart etter forsegling av systemet. Dette betyr at du må forsegle systemet med en svarfil der systemspråket velges på engelsk, og deretter endre systeminnstillingene slik at grensesnittet er russisk. Ikke en veldig god løsning. Kanskje problemet kan løses ved å installere en språkpakke eller installere flere språkpakker?

Eksperiment 8

Vi laster opp systembildet - engelsk i revisjonsmodus.

Vi kobler til Internett, i systemparametrene går du til delen "Språk", velg "Legg til språk", velg språket "russisk", klikk på "Neste", la installasjonsparametrene være standard, klikk på "Installer", etter installasjon språkpakken starter vi systemet på nytt, nå på Russified. Koble systemet fra Internett, kjør "Sysprep.bat", velg punkt 2.

Etter å ha lastet systemet, i snapin-modulen "Computer Management", opprett brukeren "Bruker", legg til forberedelsespakken, gå til "Bruker" -kontoen, multi-kiosken fungerer ikke.

Eksperiment 9

La oss prøve å russifisere systemet før installasjon, i frakoblet modus. Samtidig vil det være et kort opplæringsprogram om lokalisering av distribusjonen.

Jeg tar en flash-stasjon med en ren originaldistribusjon - X21-96381. Det blir kjøring "E". For å montere bilder oppretter jeg mapper: "c:MountInstall", "c:MountWinre", "c:MountBoot". Jeg tar et sett med lokaliseringspakker - X21-87814. Og inn i "c:Mount"-mappen kopierer jeg pakkene fra den: "Microsoft-Windows-Client-Language-Pack_x86_ru-ru.cab", "lp.cab", "WinPE-Setup_ru-ru.cab". Jeg starter konsollen med administratorrettigheter. Jeg tror at ytterligere kommandoer vil være klare uten kommentarer.

Lokaliseringskommandoer

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

Vi starter opp fra flash-stasjonen, velger russisk språk og installerer systemet på en tom disk. Når systemet ber deg velge en region, trykk "Ctrl+Shift+F3". I snapin-modulen "Computer Management", opprett en bruker "Bruker", legg til en forberedelsespakke, gå til "Bruker"-kontoen, multi-kiosken fungerer ikke.

Start opp fra en flash-stasjon til WinPE. Utfør kommandoen "Dism /image:E: /Set-UILang:en-us".

Vi starter opp i systemet, prøv å logge på "Bruker" -kontoen, multikiosken fungerer.

Tilsynelatende ligger ikke problemet i metodene for å legge til en pakke, la oss prøve å legge til flere pakker.

Eksperiment 10

Vi tar flash-stasjonen som vi forberedte i forrige trinn.

Vi tar "Feat on Demand"-pakken – X21-87815. Jeg kopierer pakkene fra den til "c:Mount"-mappen: «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».

Start konsollen med administratorrettigheter og utfør kommandoene:

kommandoer

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

Vi starter opp fra flash-stasjonen, velger russisk språk og installerer systemet på en tom disk. Når systemet ber deg velge en region, trykk "Ctrl+Shift+F3". I snapin-modulen "Computer Management" oppretter du "Bruker"-brukeren, legger til klargjøringspakken og logger på "Bruker"-kontoen. Jeg fikk en svart skjerm som hang lenge, så jeg varmet opp systemet.

Vi sletter forberedelsespakken, logger på som "Bruker", starter systemet på nytt, legger til forberedelsespakken, multikiosken fungerer ikke.

Start opp fra en flash-stasjon til WinPE. Utfør kommandoen "Dism /image:E: /Set-UILang:en-us".

Vi starter opp i systemet, prøv å logge på "Bruker" -kontoen, multikiosken fungerer.

Løsning

Vanlige helter. De tar alltid en omvei!

Ulike metoder for å installere lokaliseringspakker løste ikke problemet, noe som betyr at du må installere "en-us"-språket på den første oppstarten etter forseglingen, og endre språkinnstillingene etter den første oppstarten.

Vi laster opp systembildet - Russified i revisjonsmodus.

I “Unattend.xml”-filen, skriv inn “en-US” i parameteren, kjør “Sysprep.bat”, velg punkt 2 og se hva vi har. Velkomstskjermen er på engelsk, multikiosken fungerer. Dette betyr at du må legge til en kommando i "Unattend.xml" for å endre velkomstspråket. Og for å gjøre dette, må du kjøre kommandoen "control intl.cpl,, /f:" som indikerer konfigurasjonsfilen, som vil spesifisere kopieringen av gjeldende parametere til velkomstskjermen. Innholdet i konfigurasjonsfilen vil se slik ut.

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

Fordi vil kopiere innstillingene til gjeldende bruker, så må kommandoen utføres etter at brukeren har logget inn, noe som betyr at vi trenger. Det er ett lite "men", utførelse vil finne sted etter at en bruker med administratorrettigheter logger på. Og jeg vil ikke lage en ekstra fil som er nødvendig for at kommandoen skal kjøre. Det er bedre å implementere hele løsningen i en enkelt fil - "Unattend.xml". For å gjøre dette, trenger du ganske enkelt å kjøre en kommando som oppretter en konfigurasjonsfil. Jeg tror jeg lager en konfigurasjonsfil ved å bruke "echo"-kommandoen i "cmd"-miljøet, men den må unnslippe vinkelparentesene med en circumflex. De. For å lage en konfigurasjonsfil får du følgende kommando.

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

Men vi må plassere denne kommandoen i XML, som har sine egne krav til bruk av spesialtegn:

Spesiell karakter
Erstatningsverdi

>
&gt;

<
&lt;

&
&amp;

'
&apos;

"
&quot;

Som et resultat, for å lage en konfigurasjonsfil, fikk vi følgende kommando for "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;

Deretter utfører vi kommandoen ved å bruke konfigurasjonsfilen.

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

Deretter sletter du den tidligere opprettede filen og starter systemet på nytt. endringene trer i kraft etter en omstart.

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

Som et resultat endte jeg opp med følgende svarfil for 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>

La oss sjekke...

Vi laster opp systembildet - Russified i revisjonsmodus.

Vi endrer Unattend.xml-filen til en ny, kjører “Sysprep.bat”, velger punkt 2 og ser hva vi har. Når du starter opp første gang, er velkomstskjermen på engelsk og systemet starter på nytt. Velkomstskjermen er på russisk, multikiosken fungerer.

Hvis du har spørsmål om oppsett og lisensiering av Windows 10 IoT Enterprise, vennligst kontakt: [e-postbeskyttet] eller til nettsiden quarta-embedded.ru.
Du kan finne svar på noen spørsmål i wikien vår eller på vår YouTube-kanal

Forfatter av artikkelen: Vladimir Borisenkov, teknisk ekspert ved Quarta Technologies.

Kilde: www.habr.com