Windows 10 IoT Enterprise 2019 - multi-kiosk-tilstand

Indledning

Windows 10 IoT Enterprise 2019 er markedsføringsnavnet for den næste udgivelse af Windows 10. Udgivelsen af ​​denne version blev annonceret i september 2018, henholdsvis den har version 1809, 18 er året, 09 er måneden. Der er skrevet mange artikler om den nye udgivelse af Windows 10 1809, men de fleste af dem er afsat til forskellige "buer", "skønheder" og forskellige funktioner, der efterspørges derhjemme.
Denne artikel vil kun diskutere funktionalitet, der kan være efterspurgt blandt producenter af faste enheder. Nemlig om de nye muligheder i "Kiosk"-tilstanden. Emnet om ændring af navne på serviceordninger for Windows-udgaver af enterprise-segmentet vil også blive berørt.

Gammel serviceordning med nyt navn

Lad mig starte med en kort forklaring: I firmasegmentet af Windows-udgaver er der to serviceordninger, ifølge hvilke Windows modtager opdateringer. Servicediagrammer har en bogstavbetegnelse. I øjeblikket hedder servicegrenene LTSC og SAC.

LTSC står for Langsigtet servicekanal (med langsigtet vedligeholdelse). Tidligere hed en sådan kanal LTSB - Long Term Servicing Branch. Microsoft ændrede blot navnet på servicekanalen, selve tjenesten forblev den samme.

Microsoft ændrede også navnet på servicegrenen CBB - Current Branch for Business, nu hedder denne servicegren SAC - Halvårig kanal. Igen er det kun navnet, der er ændret.

Men det skal nævnes, at LTSC- og SAC-servicegrenene bruger forskellige Windows-distributioner.

Lidt om den nye kiosktilstand hos SAC

Som jeg allerede har sagt, har LTSC og SAC forskellige distributioner. LTSC har ikke standard universelle apps eller en app-butik, men det har SAC. Derfor har LTSC ikke en Edge-browser, men det har SAC. Hvis du vælger Edge-browseren, når du opsætter en kiosk, er to tilstande nu tilgængelige:

  1. Som et digitalt skilt eller interaktivt display
  2. Som en offentlig browser

Jeg vil ikke dvæle ved at opsætte disse tilstande, fordi... Opsætningen er meget enkel og udføres i et grafisk interface. Du skal bare oprette en bruger, der ikke er medlem af administratorgruppen, aktivere kiosktilstand for ham ved hjælp af EDGE og se, hvordan disse tilstande fungerer.

Kiosk med mange applikationer

Nogle mennesker tror, ​​at licenseret brug Windows 10 IoT Enterprise indebærer betjening af kun én applikation på enheden, faktisk er dette ikke tilfældet. Enheden skal være designet til at udføre en enkelt forretningsopgave, og brugeren må ikke have adgang til en desktop. Nu har Microsoft selv givet værktøjet til at bruge mange applikationer. Denne tilstand kaldes "multi-app kiosk"; herefter vil jeg for kortheds skyld kalde det "multikiosk". I denne artikel vil vi se på opsætning af denne tilstand ved hjælp af softwarepakken og nogle af funktionerne i denne tilstand.

Lidt om Multikiosk-tilstanden

Når du logger ind på en brugerkonto, som multi-kiosk-tilstand er konfigureret til, fungerer systemet i tablet-tilstand. Startmenuen udvides til fuld skærm og viser programfelter.

Liste over grundlæggende indstillinger og tilstandsfunktioner:

  1. Opsætning til flere brugere eller grupper
  2. Hver bruger eller gruppe kan tildeles individuelle indstillinger
  3. Evne til at bruge universelle og klassiske applikationer
  4. Muligheden for automatisk at starte en af ​​applikationerne, når brugeren logger på
  5. Hvidlistede applikationer
  6. Adgang til mapper ved hjælp af en hvid liste

Det er værd at være opmærksom på punkt 5. Som standard vil kun de applikationer, der er nødvendige for, at systemet kan fungere, få lov til at fungere, andre applikationer skal tilføjes til listen over tilladte. De der. Nu behøver du ikke at konfigurere AppLocker separat. For at undgå konflikter med AppLocker-indstillinger, i multi-kiosk-tilstand, vil alle konfigurerede AppLocker-regler ikke gælde.

Punkt 6 angiver en god mulighed, men i øjeblikket er det kun muligt at give skrivetilladelse til mappen "Downloads". Tilstanden giver dig mulighed for at bruge universelle og klassiske applikationer. Alle tilstandsindstillinger er angivet i en XML-fil, hvor du også kan angive indstillinger for en enkelt applikationskiosk.

Lad os nu prøve at sætte det hele op...

Hvad har vi brug for...

  1. Først og fremmest har vi brug for selve systemet, som understøtter multikiosk-tilstand. Her kan du downloade demo version
  2. Vejledning til opsætning af en multikiosk
  3. Enhver XML-editor
  4. Sådan anvender du multikiosk-indstillinger:
    1. Til metode nr. 1 - ICD, som er en del af ADK. ADK er muligt download her
    2. Til metode nr. 2 - PsExec-værktøjet. Nytten kan være download her

Han sagde - "Lad os gå!"

Jeg vil udføre alle eksperimenter på Windows 10 IoT Enterprise 1809 LTSC x32 kommerciel version, ikke en demoversion. Systemet vil ikke blive aktiveret pga manglende aktivering påvirker ikke systemets funktionalitet. Jeg tog kun 32 bit, fordi det fylder mindre, og det vil være hurtigere at arbejde med systembilleder.

Trin 1 – installation

Installation af Win 10 IoT Enterprise er ikke anderledes end at installere Win 10 Enterprise, så jeg vil ikke beskrive hele installationsprocessen, jeg vil kun tale om nogle af nuancerne.

For en sikkerheds skyld, lad mig minde dig om, lad være med at installere systemet oven på det installerede. Når installationsprogrammet spørger om installationsplaceringen af ​​systemet, skal du slette alle partitioner på den fremtidige systemdisk og angive en ikke-partitioneret disk.

Vi installerer systemet uden internetforbindelse, så systemet ikke trækker noget unødvendigt op.

Fordi Vi laver backupbilleder af systemet, og til dette vil vi forsegle det i revisionstilstand, så kan du spare lidt tid ved at indlæse systemet i revisionstilstand umiddelbart efter installationen. For at gøre dette, når systemet beder dig om at vælge en region "Lad os starte med region. Er det rigtigt" tryk bare på "Ctrl+Shift+F3".

Trin 2 - opret et systembillede

Fordi vi vil håne systemet og prøve forskellige nye indstillinger, det er muligt, at noget vil gå galt, og vi bliver nødt til at returnere systemet til dets oprindelige tilstand. Og for hurtigt at vende tilbage til sin oprindelige tilstand, skal du oprette et systembillede. Det eneste, jeg vil gøre, er at kopiere "gentleman's kit" - scriptet og svarfilen. Alle mine filer er placeret i mappen "Sysprep", som jeg kopierer til roden af ​​systemdisken. Og naturligvis vil jeg dele dette "gentleman's set" med dig.

Sysprep.bat – for at 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 startes, vil scriptet kontrollere tilstedeværelsen af ​​"Admin"-kontoen og oprette en, hvis den mangler. Kontoen vil blive føjet til gruppen Administratorer.

Unattend.xml – svarfil til 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 revisionstilstand vil scriptet tilføje en kommando til registreringsdatabasen for at afslutte "sysprep.exe"-processen for ikke at lukke sysprep-vinduet manuelt hver gang. Når forseglet i hej-tilstand, vil scriptet fjerne kommandoen om at lukke vinduet fra registreringsdatabasen og vil selv ændre arkitekturværdien i svarfilen til den nuværende. Svarfilen indeholder parametre til opstart af systemet uden brugerinteraktion og en kommando til sletning af "Sysprep"-mappen i roden af ​​systemdrevet.

Nu vil jeg forsegle systemet i revisionstilstand ved hjælp af "Sysprep.bat" og tage et billede af systemet. Jeg vil afbilde systemet ved hjælp af DISM og vil kun afbilde systemets lydstyrke. Hvis du kun vil afbilde systemvolumen og ikke hele disken, så glem ikke at kopiere indholdet af "WindowsSystem32Recovery"-mappen til den første bind i mappen "RecoveryWindowsRE" efter installation af systemet. Dette skal gøres, før du indlæser operativsystemet. efter indlæsning af OS, vil mappen "WindowsSystem32Recovery" allerede være tom.

Trin 3 – Russificering af systemet

Sprogpakken kan installeres uden internetforbindelse, hvis du har denne pakke. Hvis ikke, vil systemet selv downloade det fra internettet, når du tilføjer sproget i indstillingerne. Du behøver bare ikke tage sprogpakken fra tidligere versioner af operativsystemet. Til Windows 10 1809 skal der være en sprogpakke specifikt til Windows 10 1809.

Microsoft følger sin plan om gradvist at overføre indstillinger fra den klassiske menu til den nye, så i det klassiske kontrolpanel finder du ikke længere indstillinger for at ændre sproget og installere en sprogpakke. Disse indstillinger er nu kun i systemparametrene.

I revisionstilstand kan du støde på et problem med at åbne systemindstillinger fra startmenuen; for at åbne systemindstillinger skal du køre kommandoen - "ms-indstillinger:", vær opmærksom på kolon i slutningen af ​​kommandoen, uden det vil kommandoen ikke arbejde. Efter at have åbnet systemparametrene én gang ved hjælp af denne kommando, kan den åbnes ved hjælp af den grafiske menu.

Men i systemindstillingerne kan du installere en sprogpakke, hvis systemet er forbundet til internettet, er der ingen mulighed for at vælge at installere en sprogpakke fra en lokal fil.

Jeg vil ikke beskrive processen med at lokalisere systemet, fordi... dette vil komplicere artiklen betydeligt, især da lokaliseringsprocessen er detaljeret beskrevet her. Men jeg vil gerne henlede din opmærksomhed på det særlige ved at ændre systemsproget efter installation af en sprogpakke ved hjælp af konsollen. Denne funktion er beskrevet i den samme wiki, som jeg gav et link til tidligere, i underafsnittet "Tilføjelse af et sprog til listen over sprog".

Jeg installerer sprogpakken uden internetforbindelse.

Efter fuldstændig lokalisering af systemet skal du sørge for at oprette et billede af systemet.

Trin 4 - Installer de nødvendige applikationer

Fordi Da LTSB- og LTSC-systemer ikke har en applikationsbutik, forårsager installation af applikationer fra Microsoft Store nogle vanskeligheder, nemlig at downloade applikationen. For at downloade applikationer har Adguard-firmaet lavet en meget bekvem service - "Adguard Store", hvormed du kan få midlertidige downloadlinks til applikationer og deres komponenter.

For at installere applikationen skal du bruge filer med udvidelserne "Appx" og "AppxBundle". Før du installerer selve programmet, skal du installere dets komponenter. Som regel kan komponenter fra en applikation intuitivt skelnes med filnavnet.

For ikke at gøre artiklen for lang, vil jeg ikke beskrive i detaljer processen med at installere applikationer, især da der er information om installation detaljerede instruktioner. Men jeg tilføjer endnu en måde at installere applikationer på din nuværende konto. Programmer kan installeres ved hjælp af programmet "App Installer", men for at installere applikationer skal du bruge en internetforbindelse, men applikationer kan installeres med et dobbeltklik, og du behøver ikke dens komponenter, alle nødvendige komponenter vil downloade og installere "App Installer".

Og en lille påmindelse, når du installerer applikationen på den aktuelle konto, vil du ikke være i stand til at forsegle systemet. Sådan installeres applikationer, så du kan forsegle systemet, se ovenstående instruktioner. Og for at kontrollere driften af ​​multikiosken er eksisterende applikationer ganske tilstrækkelige.

Trin 5 – oprettelse af en konfigurationsfil til multikiosken

Nu kommer vi til den mest interessante del - opsætning af kiosktilstand. Lad os se på instruktioner i henhold til de indstillinger, vi ser. Først og fremmest skal vi oprette en XML-konfigurationsfil, som du kan finde et komplet eksempel på her. se her.

Lad os starte med at opsætte fliselayoutet. Den nemmeste måde at oprette en XML-flisetilpasningskonfiguration på er eksportere deres nuværende tilstand.

Først og fremmest, lad os tilføje fliser af de applikationer, vi har brug for, til Start-menuen. Kald søgningen “Win+s” frem, find den ønskede applikation, højreklik på den og vælg “Pin to Start Screen”.

Jeg har fastgjort følgende apps:

  • notesbog
  • Lommeregner
  • Internet Explorer
  • Paint
  • WordPad
  • Parametre
  • Windows -sikkerhed

De sidste to applikationer blev fastgjort, fordi... Der er simpelthen ingen andre universelle applikationer i standard LTSC-pakken. Bemærk, at skrivebordsfliser linker til genveje. Nu, ved at flytte fliserne direkte i Start-menuen, vil jeg adskille de fastgjorte fliser i to grupper. For at oprette en ny gruppe af fliser skal du trække en flise væsentligt højere eller lavere end andre fliser, hvilket vil fremhæve en intuitiv opdeling. Du kan navngive grupperne efter eget skøn; for at gøre dette skal du placere musemarkøren over gruppen, og når inskriptionen "Navngiv gruppen" vises, skal du klikke på venstre museknap. Jeg vil kalde den første gruppe for "Indstillinger", den vil inkludere fliserne "Indstillinger" og "Windows Security". Jeg vil kalde den anden gruppe "Office Applications", som vil omfatte alle de andre fliser. Du kan i øvrigt flytte hele grupper af fliser ved at trække dem ved hjælp af de to striber, der er placeret øverst til højre i gruppenavnet.

Fordi På flisen "Windows Security" passer navnet ikke helt, jeg vil ændre størrelsen til "Wide". For at ændre størrelsen på en flise skal du højreklikke på flisen og vælge "Rediger størrelse".

Efter konfiguration eksporterer vi den aktuelle tilstand og udfører kommandoen i PowerShell-miljøet - "Export-StartLayout - path C:SysprepStartLayout.xml".

Dernæst er den nemmeste måde ikke at oprette indstillingsfilen selv, men tag en eksempelfil herfra indstillinger – klik på knappen "Kopier", indsæt indholdet i notesblok og gem som "MultiAppKiosk.xml". Nu ændrer vi indstillingerne til vores egne. For at ændre indstillingerne for vedhæftede fliser skal du kopiere hele "StartLayoutCollection"-blokken fra "StartLayout.xml" til "MultiAppKiosk.xml". For at tilføje applikationer til de tilladte skal du indsætte universelle applikationsidentifikatorer i sektionen "AllowedApps" og i samme blok tilføje den fulde sti til de eksekverbare filer i klassiske applikationer, som er angivet i egenskaberne for genvejene, hvortil fliser referer. For hurtigt at komme til en genvej skal du højreklikke på en fastgjort flise og gå til Mere > Gå til filplacering. Bemærk, at parameteren "AppUserModelId" bruges til at angive Universal App ID, og ​​parameteren "DesktopAppPath" bruges til at angive den fulde sti til desktopapplikationen. Og endnu en lille nuance, hvis du planlægger at bruge IE på et x64-system, skal du på listen over tilladte programmer angive to stier til den eksekverbare fil "Program FilesInternet Exploreriexplore.exe" og "Program Files (x86)Internet Exploreriexplore. exe".

Jeg vil ikke give adgang til mapper, så jeg sletter afsnittet "FileExplorerNamespaceRestrictions".

At vise proceslinjen generer mig ikke, så jeg forlader alt som det er i afsnittet "Proceslinje".

I eksemplet er der angivet to profiler, men jeg vil kun have én profil, så afsnittet med den anden profil kan slettes. Før du afinstallerer, skal du være opmærksom på eksemplet med automatisk start af et program med argumenter.

I sektionen "Konfigurationer" er konti knyttet til profiler; Bemærk venligst, at flere konti kan linkes til én profil. Men fordi Jeg er kun interesseret i én konto, så sletter jeg alle bindinger undtagen den første - "Config"-blokkene. I den resterende binding vil jeg skrive brugernavnet "Bruger".

Jeg har denne fil med parametre

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 laver dine XML-konfigurationsfiler, skal du ikke glemme, at hver profil skal have et unikt ID, og ​​ikke kun inden for én XML-fil, men inden for ét OS. De der. Ideelt set, for at undgå forvirring, kan du oprette en ny identifikator hver gang; dette kan gøres i PowerShell-miljøet ved at bruge kommandoen "[guid]::NewGuid()". Og sørg for at gemme filen i "UTF-8"-kodning; hvis filen er gemt i "ANSI"-kodning, vil du, når du bygger forberedelsespakken, modtage en fejl, hvis XML-filen indeholder kyrillisk.

Trin 6 – anvendelse af multikiosk-indstillinger

Lad os se på to måder at anvende indstillingerne beskrevet i konfigurationsfilen på. Den første er gennem en klargøringspakke, som skal oprettes i ICD. For nogle vil denne metode måske være mere velkendt. Den anden bruger "MDM Bridge WMI Provider", denne metode virkede mere praktisk for mig.

Metode # 1

Hvem har ikke en ICD? download ADK og installere. Installation af ADK er meget enkel; sættet af komponenter kan efterlades som standard.

Start ICD, klik på flisen "Avanceret forberedelse", angiv navnet og mappen på projektet, og klik på "Næste". I det næste vindue skal du vælge "Alle udgaver af Windows-skrivebordet" og klikke på "Næste". Du kan springe over at importere forberedelsespakken; klik på "Udfør".

Udvid rullemenuen "Runtime Settings", udvid derefter undermenuen "AssignedAccess", og vælg "MultiAppAssignedAccessSettings". Øverst i den midterste sektion af ICD-vinduet skal du klikke på knappen "Gennemse" og angive placeringen af ​​XML-filen med indstillingerne. For en sikkerheds skyld kan du gemme projektet ved at trykke på "Ctrl+s". I den øverste venstre del af ICD'en skal du vælge "Eksporter" og vælge "Provisioning Package" fra rullemenuen. Som ejer skal du vælge "IT-administrator"; alle andre spørgsmål kan springes over ved at klikke på "Næste" og til sidst klikke på "Byg" og "Udfør".

I det installerede system, glem ikke at oprette en bruger "Bruger"; han kan ikke tilføjes til gruppen "Administratorer", ellers fungerer multikiosken ikke. Jeg oprettede en bruger i Computer Management med en adgangskode, der aldrig udløber.

Nu kører vi forberedelsespakken på det tidligere installerede system. Efter påføring af forberedelsespakken ændres Start-menuen og administratorens menu. I venstre startkolonne skulle knapperne forsvinde: "Dokumenter", "Billede", "Indstillinger". Hvis startmenuen ikke er ændret, så er noget gået galt. En installeret pakke kan fjernes ved at åbne vinduet Indstillinger > Konti > Arbejds- eller skolekontoadgang > Tilføj eller fjern klargøringspakke.

Hvis startmenuen er ændret, så anvendes indstillingerne på systemet, log ind som den bruger, som multikiosken er konfigureret til og se resultatet.

Metode # 2

Anvendelse af indstillinger ved hjælp af "MDM Bridge WMI Provider" beskrevet her. Bekvemmeligheden ved denne metode er dens fleksibilitet i brug og evnen til at slippe af med mange manuelle operationer, der er nødvendige for at skabe en forberedelsespakke. Her kan alle træffe en beslutning for sig selv, som vil være bekvem for dem. Jeg lavede et par scripts til mig selv.

MiltiKiosk.bat – start script

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

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 bruge min løsning, så gem ovenstående scripts med deres originale navne i én mappe og læg filen "PsExec.exe" i samme mappe. I den samme mappe skal du oprette en "XML"-mappe og kopiere XML-filerne for at konfigurere multikiosken til den. Jeg vil bruge den samme fil som i den første metode.

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>

Lidt om manuskriptets funktioner. Scriptet er designet til at bruge XML-filer med "UTF8"-kodning; hvis du vil bruge "ANSI"-kodning, skal du fjerne parameteren "encoding UTF8" fra fillæsningsindstillingen. Du skal placere XML-filer i "XML"-mappen uden at erstatte tegn; selve scriptet vil erstatte specialtegn med de relevante betegnelser. For ikke at blive forvirret i GUID'erne for at linke brugere til profiler, kan du blot angive brugernummeret eller navnet i krøllede klammeparenteser; alt indhold i krøllede klammeparenteser vil blive erstattet med GUIDs.

Det er meget enkelt at bruge scriptet, bare kør det og vælg det ønskede element. For at ændre den nuværende konfiguration til en ny, er det ikke nødvendigt at slette den nuværende, den vil blive overskrevet. Glem ikke at oprette brugere, der er angivet i konfigurationsfilen.

Når du ser den aktuelle multikiosk-konfiguration i den samme session, som den blev anvendt i, vil kombinationer af erstatningstegn blive vist i stedet for specialtegn. Efter ændring af sessionen (genstart af scriptet), vil alle specialtegn blive vist i deres oprindelige form.

Trin 7 - Forsegling af systemet

Multikiosken virker, ja, det er alt, ser det ud til...

Hvis alt går efter planen, så mærker du ikke noget.

Glem ikke, at vi stadig skal skifte systemet fra revisionstilstand til velkomsttilstand. Nå, vi er klar til dette, vi starter "Sysprep.bat", vælg punkt 2, systemet er forseglet. Vi tænder for enheden, systemet starter, vi logger ind på den brugerkonto, som multikiosken er konfigureret til, men vi kan ikke logge ind. Efter meddelelsen "Velkommen" vises meddelelsen "Log ud".

Først ville jeg kun beskrive løsningen på problemet, men senere besluttede jeg at beskrive trinene til at identificere problemet og finde den enkleste løsning, fordi... Mange læsere vil helt sikkert blive plaget af vag tvivl - "Hvad nu hvis det er sådan her...". Jeg tror, ​​at man ved at beskrive de forskellige eksperimenter vil spare en del tid, hvis man vil finde en anden løsning. For at gøre oplysningerne så nøjagtige som muligt, og for endnu en gang at sikre, at der ikke er fejl, vil jeg beskrive eksperimenterne i formatet "udført og optaget". De der. Jeg vil lave de beskrevne forsøg igen.

eksperimenter

Hvad gjorde vi? Der er to konti i systemet:

"Admin" - i gruppen "Administratorer".
"Bruger" - i gruppen "Brugere".
I revisionstilstand fungerede multikiosken, men når den blev forseglet, virkede den ikke.

Forsøg 1

Vi sletter den installerede forberedelsespakke, i "Computer Management" snap-in'en sletter vi brugeren "Bruger" og opretter en ny bruger med navnet "Bruger", anvender forberedelsespakken, gå til "Bruger" kontoen - det gør det ikke arbejde. Vi går under navnet "Admin", fjern brugeren "Bruger" fra gruppen "Brugere", føj den til gruppen "Administratorer", gå under navnet "Bruger" - det virker ikke. Vi logger ind under navnet "Admin", sletter forberedelsespakken med multikiosken, logger ind under navnet "Bruger" - det lykkedes os at logge ind, men multikiosk-tilstanden fungerer selvfølgelig ikke pga. Klargøringspakken er blevet fjernet.

Forsøg 2

Vi uploader systembilledet - Russified i revisionstilstand.

OS er indlæst, tryk på “Win+r”, fordi Vores sysprep-vindue er lukket automatisk, kør "sysprep"-kommandoen og kør "sysprep" i det vindue, der åbnes. Sysprep-indstillinger i vinduet: "Gå til systemets velkomstvindue (OOBE)", "Forbereder til brug", "Genstart". Klik på "OK" og vent på OS-hilsenen. Vi besvarer spørgsmålene, når systemet starter op for første gang: "Fortsæt på det valgte sprog?" - "Russisk"; region – Rusland; tastaturlayout – russisk; tilføje et andet tastaturlayout - spring over; "Lad os forbinde dig til netværket" - "Spring over nu"; opret forbindelse til internettet - nej; licensaftale - accepter; "Hvem vil bruge denne computer" - "Test"; oprettelse af en adgangskode - lad feltet være tomt; Praktisk betjening på forskellige enheder – nej; Privatlivsindstillinger – accepter. OS er indlæst, i "Computer Management"-snap-in'et opretter vi en bruger med navnet "Bruger", tilføjer forberedelsespakken. Resultatet er, at det ikke virker.

Forsøg 3

Vi uploader systembilledet - Russified i revisionstilstand.

OS er indlæst, tilslut systemet til internettet, kør kommandoen "gpedit.msc" og i afsnittet "Windows Update" aktiver "Aktiver anbefalede opdateringer gennem automatiske opdateringer", genstart for en sikkerheds skyld. I opdateringscenteret skal du klikke på "Søg efter opdateringer" og genstarte, indtil alle opdateringer er installeret. Afbryd systemet fra internettet. Vi starter "sysprep" i grafisk tilstand og gentager alle trinene beskrevet i det foregående trin fra at køre "sysprep"-værktøjet til at tilføje forberedelsespakken. Resultatet er, at det ikke virker.

Forsøg 4

Vi uploader systembilledet - engelsk i revisionstilstand.

Vi starter "sysprep" i grafisk tilstand, forsegler OS med de samme parametre som under eksperiment 2. Når systemet starter første gang, vælger vi de samme parametre som i eksperiment 2, med undtagelse af regionale og sproglige parametre pga. Der er ikke noget russisk sprog. På samme måde skal du oprette en bruger "Bruger" og tilføje en klargøringspakke. Resultatet er, at det virker. De der. Problemet er relateret til lokalisering.

Forsøg 5

Vi uploader systembilledet - Russified i revisionstilstand.

I snap-in'et "Computer Management" skal du oprette en bruger "Bruger", tilføje en forberedelsespakke, gå til "Bruger"-kontoen, multi-kiosken fungerer.

Log ud af din konto og log ind under "Admin"-kontoen. Vi starter PowerShell med administratorrettigheder, udfører kommandoen "Dism /online /Get-Intl" og se "Standard brugergrænsefladesprog: en-US".

Vi starter fra flashdrevet ind i WinPE, det installerede OS er på mit E-drev. Vi udfører kommandoen "Dism /image:E: /Set-UILang:ru-ru". Vi ser på resultatet, udfører "Dism /image:E: /Get-Intl" og ser "Default system UI language: ru-RU".

Vi starter ind i systemet, logger ind på "Bruger" -kontoen, multikiosken virker ikke.

For klart at fastslå årsag-og-virkning-forholdet til problemet, lad os prøve igen at få multi-kiosken til at fungere og ikke-fungerende.

Vi starter fra flashdrevet ind i WinPE, det installerede OS er på mit E-drev. Vi udfører kommandoen "Dism /image:E: /Set-UILang:en-us". Vi ser på resultatet, udfører "Dism /image:E: /Get-Intl" og ser "Standard systembrugergrænsefladesprog: en-US".

Vi starter ind i systemet, logger ind på "Bruger" -kontoen, multikiosken fungerer.

Vi starter fra flashdrevet ind i WinPE, det installerede OS er på mit E-drev. Vi udfører kommandoen "Dism /image:E: /Set-UILang:ru-ru". Vi ser på resultatet, udfører "Dism /image:E: /Get-Intl" og ser "Default system UI language: ru-RU".

Vi starter ind i systemet, logger ind på "Bruger" -kontoen, multikiosken virker ikke.

De der. du kan se en klar afhængighed af kioskens ydeevne på standardbrugergrænsefladesproget. Måske er der nogle andre faktorer, der påvirker multikioskens ydeevne?

Forsøg 6

Af hensyn til forsøgets renhed genopfylder vi systemet. Vi uploader systembilledet - Russified i revisionstilstand.

Vi starter "sysprep" i grafisk tilstand, forsegler OS med de samme parametre som under eksperiment 2. Vi venter på, at OS hilser os og besvarer spørgsmålene: "Fortsæt på det valgte sprog?" - "Engelsk Forenede Stater)"; region – Rusland; Tastaturlayout – russisk. Yderligere blev alle parametre valgt som i eksperiment 2.

Lad os se på standardsprogindstillingerne for brugergrænsefladen. Vi udfører kommandoen "Dism /online /Get-Intl" og se "Standard systembrugergrænsefladesprog: en-US". I snap-in'et "Computer Management" skal du oprette en bruger "Bruger", tilføje en forberedelsespakke, gå til "Bruger"-kontoen, multi-kiosken fungerer.

Vi forsøger at bryde kiosken ved at ændre standardsproget for brugergrænsefladen. Vi går ind i "Test"-brugeren, som blev oprettet, da systemet startede første gang, og aktiverer automatisk login for den, så systemet ikke starter op på "Bruger"-kontoen med det samme. Udfør "netplwiz", vælg "Test"-brugeren, fjern markeringen i afkrydsningsfeltet "Kræv brugernavn og adgangskode", og anvend parametrene.

Boot fra et flashdrev til WinPE. Udfør kommandoen "Dism /image:E: /Set-UILang:ru-ru". Vi ser på resultatet, udfører "Dism /image:E: /Get-Intl" og ser "Default system UI language: ru-RU".

Vi starter op i systemet, prøv at logge ind på "Bruger" -kontoen, multikiosken fungerer. De der. den kan ikke brydes. Er det muligt at få det til at fungere på denne måde?

Forsøg 7

Vi uploader systembilledet - Russified i revisionstilstand.

Vi starter "Sysprep.bat", vælger punkt 2. Vi starter op i systemet, opretter brugeren "Bruger" i "Computer Management" snap-in, tilføjer forberedelsespakken, går til "Bruger" kontoen, multi- kiosken virker ikke.

Boot fra et flashdrev til WinPE. Udfør kommandoen "Dism /image:E: /Set-UILang:en-us". Vi ser på resultatet, udfører "Dism /image:E: /Get-Intl" og ser "Standard systembrugergrænsefladesprog: en-US".

Vi starter op i systemet, prøv at logge ind på "Bruger" -kontoen, multikiosken virker ikke.

Det viser sig, at ved at ændre standardsprogindstillingen for brugergrænsefladen, kan du kun påvirke multikioskens ydeevne, når systemet er i revisionstilstand eller ved den første opstart efter forsegling af systemet. Det betyder, at du skal forsegle systemet med en svarfil, hvor systemsproget vælges på engelsk, og derefter ændre systemindstillingerne, så grænsefladen er russisk. Ikke en særlig god løsning. Måske kan problemet løses ved at installere en sprogpakke eller installere yderligere sprogpakker?

Forsøg 8

Vi uploader systembilledet - engelsk i revisionstilstand.

Vi opretter forbindelse til internettet, i systemparametrene gå til afsnittet "Sprog", vælg "Tilføj sprog", vælg sproget "russisk", klik på "Næste", lad installationsparametrene være standard, klik på "Installer", efter installation sprogpakken genstarter vi systemet, nu på Russified. Afbryd systemet fra internettet, kør “Sysprep.bat”, vælg punkt 2.

Efter indlæsning af systemet, i "Computer Management" snap-in, skal du oprette "Bruger" brugeren, tilføje forberedelsespakken, gå til "Bruger" kontoen, multi-kiosken fungerer ikke.

Forsøg 9

Lad os prøve at russificere systemet før installation, i offline-tilstand. Samtidig vil der være et kort undervisningsprogram om lokalisering af fordelingen.

Jeg tager et flashdrev med en ren originalfordeling - X21-96381. Det bliver drev "E". For at montere billeder opretter jeg mapper: "c:MountInstall", "c:MountWinre", "c:MountBoot". Jeg tager et sæt lokaliseringspakker - X21-87814. Og ind i mappen "c:Mount" kopierer jeg pakkerne fra den: "Microsoft-Windows-Client-Language-Pack_x86_ru-ru.cab", "lp.cab", "WinPE-Setup_ru-ru.cab". Jeg starter konsollen med administratorrettigheder. Jeg tror, ​​at yderligere kommandoer vil være klare uden 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 fra flashdrevet, vælger det russiske sprog og installerer systemet på en tom disk. Når systemet beder dig om at vælge en region, skal du trykke på "Ctrl+Shift+F3". I snap-in "Computer Management" skal du oprette en bruger "Bruger", tilføje en forberedelsespakke, gå til "Bruger" kontoen, multi-kiosken virker ikke.

Boot fra et flashdrev til WinPE. Udfør kommandoen "Dism /image:E: /Set-UILang:en-us".

Vi starter op i systemet, prøv at logge ind på "Bruger" -kontoen, multikiosken fungerer.

Tilsyneladende er problemet ikke i metoderne til at tilføje en pakke, lad os prøve at tilføje yderligere pakker.

Forsøg 10

Vi tager flashdrevet, som vi forberedte i det forrige trin.

Vi tager "Feat on Demand"-pakken – X21-87815. Jeg kopierer pakkerne fra den til mappen "c:Mount": «Microsoft-Windows-LanguageFeatures-Basic-ru-ru-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-OCR-ru-ru-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-Handwriting-ru-ru-Package~31bf3856ad364e35~x86~ ~.cab», «Microsoft-Windows-LanguageFeatures-TextToSpeech-ru-ru-Package~31bf3856ad364e35~x86~~.cab».

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

Start konsollen med administratorrettigheder og udfør kommandoerne:

Команды

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 fra flashdrevet, vælger det russiske sprog og installerer systemet på en tom disk. Når systemet beder dig om at vælge en region, skal du trykke på "Ctrl+Shift+F3". I snap-in'et "Computerstyring" skal du oprette "Bruger"-brugeren, tilføje klargøringspakken og logge ind på "Bruger"-kontoen. Jeg fik en sort skærm, der hang i lang tid, så jeg varmstartede systemet.

Vi sletter forberedelsespakken, logger på som "Bruger", genstarter systemet, tilføjer forberedelsespakken, multikiosken virker ikke.

Boot fra et flashdrev til WinPE. Udfør kommandoen "Dism /image:E: /Set-UILang:en-us".

Vi starter op i systemet, prøv at logge ind på "Bruger" -kontoen, multikiosken fungerer.

Løsning

Normale helte. De tager altid en omvej!

Forskellige metoder til at installere lokaliseringspakker løste ikke problemet, hvilket betyder, at du bliver nødt til at installere sproget "en-us" på den første opstart efter forsegling, og ændre sprogindstillingerne efter den første opstart.

Vi uploader systembilledet - Russified i revisionstilstand.

I filen "Unattend.xml" skal du indtaste "en-US" i parameteren, køre "Sysprep.bat", vælge punkt 2 og se, hvad vi fik. Velkomstskærmen er på engelsk, multi-kiosken fungerer. Det betyder, at du skal tilføje en kommando til "Unattend.xml" for at ændre velkomstsproget. Og for at gøre dette skal du køre kommandoen "control intl.cpl,, /f:", der angiver konfigurationsfilen, som specificerer kopieringen af ​​de aktuelle parametre til velkomstskærmen. Indholdet af konfigurationsfilen vil se sådan ud.

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

Fordi vil kopiere indstillingerne for den aktuelle bruger, så skal kommandoen udføres efter brugeren er logget ind, hvilket betyder at vi skal bruge. Der er et lille "men", eksekvering vil finde sted efter en bruger med administratorrettigheder logger ind. Og jeg ønsker ikke at oprette en ekstra fil, der ville være nødvendig for at kommandoen kan køre med succes. Det er bedre at implementere hele løsningen i en enkelt fil - "Unattend.xml". For at gøre dette skal du blot køre en kommando, der opretter en konfigurationsfil. Jeg tror, ​​jeg vil oprette en konfigurationsfil ved hjælp af kommandoen "echo" i "cmd"-miljøet, men den skal undslippe vinkelbeslagene med en cirkumfleks. De der. For at oprette en konfigurationsfil opnås 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 skal placere denne kommando i XML, som har sine egne krav til brugen af ​​specialtegn:

Specialkarakter
Udskiftningsværdi

>
&gt;

<
&lt;

&
&amp;

'
&apos;

"
&quot;

Som et resultat, for at oprette en konfigurationsfil, fik vi følgende kommando til "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;

Dernæst udfører vi kommandoen ved hjælp af konfigurationsfilen.

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

Derefter skal du slette den tidligere oprettede fil og genstarte systemet. ændringerne træder i kraft efter en genstart.

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

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

Lad os tjekke...

Vi uploader systembilledet - Russified i revisionstilstand.

Vi ændrer filen Unattend.xml til en ny, kører “Sysprep.bat”, vælger punkt 2 og ser, hvad vi har fået. Første gang du starter op, er velkomstskærmen på engelsk, og systemet genstarter. Velkomstskærmen er på russisk, multikiosken fungerer.

Hvis du har spørgsmål om opsætning og licensering af Windows 10 IoT Enterprise, bedes du kontakte: [e-mail beskyttet] eller til hjemmesiden quarta-embedded.ru.
Du kan finde svar på nogle spørgsmål i vores wiki eller på vores YouTube-kanal

Forfatter til artiklen: Vladimir Borisenkov, teknisk ekspert hos Quarta Technologies.

Kilde: www.habr.com