Windows 10 IoT Enterprise 2019 — multi-kiosk tilstand

Introduktion

Windows 10 IoT Enterprise 2019 – det marketingmæssige navn for næste udgave af Windows 10. Udgivelsen af denne version blev annonceret i september 2018 og har derfor version 1809, hvor 18 står for året og 09 for måneden. Der er skrevet mange artikler om den nye udgave Windows 10 1809, men de fleste af dem handler om forskellige "ludere", "æstetik" og forskellige funktioner, der er eftertragtede i hjemmemiljøer.
I denne artikel vil der kun blive talt om funktionalitet, der kan være efterspurgt blandt producenter af fast track-enheder. Specifikt om de nye muligheder i "Kiosk"-tilstand. Der vil også blive berørt emnet om navneændringer for serviceplanerne i Windows' erhvervssegment.

Det gamle serviceprogram med et nyt navn

Jeg vil starte med en lille forklaring: i erhvervsegmentet for Windows-udgaver er der to serviceprogrammer, som Windows modtager opdateringer gennem. Serviceprogrammerne har bogstavsbetegnelser. I øjeblikket kaldes servicegrene LTSC og SAC.

LTSC – betyder Long Term Servicing Channel (med langvarig service). Tidligere blev denne kanal kaldt LTSB – Long Term Servicing Branch, Microsoft ændrede bare navnet på servicekanalen, selve servicen forblev den samme.

Microsoft har også ændret navnet på servicegrenen CBB – Current Branch for Business, nu hedder denne servicegren SAC – Semi-Annual Channel. Igen blev kun navnet ændret.

Men det skal nævnes, at der bruges forskellige distributionsudgaver til servicegrenene LTSC og SAC.

Lidt om den nye kiosktilstand i SAC

Som jeg allerede har nævnt, har LTSC og SAC forskellige distributionsudgaver. LTSC har ikke standard universelle applikationer og appbutik, mens SAC har. Derfor har LTSC ikke Edge-browseren, men den findes i SAC. Hvis du vælger Edge-browseren under opsætning af kiosk, er der nu to adgangsmetoder:

  1. Som digital signal eller interaktiv skærm
  2. Som offentlig browser

Jeg vil ikke gå dybere ind i opsætningen af disse tilstande, da opsætningen er meget enkel og udføres via den grafiske brugergrænseflade. Opret blot en bruger, der ikke er i "Administratorer"-gruppen, aktiver kiosk-tilstanden med EDGE, og se hvordan disse tilstande fungerer.

Kiosk med mange applikationer

Nogle mener, at den licenserede brug af Windows 10 IoT Enterprise betyder, at kun én applikation må køre på enheden, men i virkeligheden er det ikke tilfældet. Enheden skal være designet til at udføre en enkelt forretningsopgave, og brugeren må ikke have adgang til skrivebordet. Nu har Microsoft selv givet et værktøj til at bruge flere applikationer. Denne tilstand kaldes "multi-app kiosk", og for korthedens skyld vil jeg kalde det "multikiosk". I denne artikel vil vi se på opsætningen af denne tilstand ved hjælp af et konfigurationspakke og nogle af de særlige funktioner ved denne tilstand.

Lidt om "Multikiosk" tilstanden

Når man logger ind på en brugerkonto, der er opsat til multikiosk-tilstand, vil systemet køre i tablet-tilstand. Startmenuen vil være udvidet til fuld skærm og vise applikationers fliser.

Liste over de vigtigste indstillinger og funktioner i tilstanden:

  1. Konfiguration for flere brugere eller grupper
  2. Hver bruger eller gruppe kan tildeles individuelle indstillinger
  3. Mulighed for at bruge universelle og klassiske applikationer
  4. Mulighed for automatisk at starte en af applikationerne, når brugeren logger ind
  5. Applikationers drift baseret på en hvid liste
  6. Adgang til mapper baseret på en hvid liste

Det er vigtigt at bemærke punkt 5. Som standard vil kun de applikationer, der er nødvendige for systemets drift, være tilladt; andre applikationer skal tilføjes til listen over tilladte. Dvs. det er ikke nødvendigt at konfigurere AppLocker separat. Forresten, for at undgå konflikter med AppLocker-indstillingerne, vil alle opsatte AppLocker-regler ikke være gældende i multikiosk-tilstand.

Punkt 6 fremhæver en god mulighed, men i øjeblikket kan der kun gives skrivemuligheder for mappen "Downloads". Tilstanden tillader brug af både universelle og klassiske applikationer. Alle indstillinger for tilstanden angives i en XML-fil, hvor man også kan angive indstillinger for en kiosk med én applikation.

Og nu lad os prøve at opsætte alt dette...

Hvad har vi brug for...

  1. Først og fremmest har vi brug for selve systemet, der understøtter multikiosk-tilstanden. Her kan du downloade demoversionen
  2. Vejledning til opsætning af multikiosk
  3. Enhver XML-editor
  4. For at anvende indstillingerne for multikiosk:
    1. For method #1 — ICD, which is part of ADK. ADK can be downloade det her
    2. For method #2 – utility PsExec. The utility can be downloade det her

He said – "Let's go!"

I will conduct all experiments on Windows 10 IoT Enterprise 1809 LTSC x32 commercial version, not the demo. The system will be unactivated since lack of activation does not affect the system's functionality. I chose 32-bit only because it takes up less space and working with system images will be faster.

Step 1 – installation

Installing Win 10 IoT Enterprise is no different from installing Win 10 Enterprise, so I won't describe the whole installation process, just mention some nuances.

Just a reminder, do not install the system over an existing one. When the installer asks for the installation location, delete all partitions on the future system disk and specify unallocated space.

We install the system without an internet connection to prevent it from pulling in anything unnecessary.

Since we will be creating system backups and will seal it in audit mode, we can save some time by booting the system into audit mode right after installation. To do this, when the system asks you to choose a region "Let’s start with region. Is this right?" just press "Ctrl+Shift+F3".

Step 2 – creating a system image

Since we will be experimenting with the system, trying various new settings, it is possible that something might go wrong and we will need to revert the system to its original state. To quickly return to the original state, we need to create a system image. The only thing I will do is copy the "gentleman's set" – the script and the answer file. All my files are in the "Sysprep" folder, which I will copy to the root of the system disk. And of course, I will share this "gentleman's set" with you.

Sysprep.bat – for sealing the system.

@echo off
chcp 1251 >nul

net session >nul 2 >nul
if %errorLevel% neq 0 (powershell -command "Start-Process "%~s0" -Verb RunAs" & exit)

tasklist /fi "ImageName eq sysprep.exe" | find /i "sysprep.exe"
if %errorlevel% lss 1 (taskkill /im sysprep.exe)

set AdminName=Admin
net user minName% >nul 2 >nul
if %errorLevel% neq 0 (call :AddAdmin "minName%")
if %errorLevel% neq 0 (call :ShowMessage "‡‡‡Fejl ved oprettelse af ny administratorkonto "minName%"‡‡Tryk på en vilkårlig tast for at afslutte scriptet" & pause >nul & exit)

pushd "%~dp0"

cls
call :ShowMessage ‡‡‡‡‡‡‡‡‡‡
echo 1 - Forsegl systemet i audittilstand
echo 2 - Forsegl systemet i welcome-tilstand
:Select
set /p Choice="Indtast menuens punktnummer: "
if "%Choice%"=="1" (goto Audit)
if "%Choice%"=="2" (goto OOBE)
echo.& echo Ugyldigt valg valgt.& goto Select

exit

:Audit
 call :ShowMessage "‡‡‡‡‡Forsegling af systemet i audittilstand"
 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 "‡‡‡‡‡Forsegling af systemet i welcome-tilstand"
 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 Brugername ikke angivet & endlocal & exit /b 1)

 call :GetGroupName "S-1-5-32-544" AdminGroup
 if not defined AdminGroup (endlocal & exit /b 2)

 call :GetGroupName "S-1-5-32-545" UserGroup
 if not defined UserGroup (endlocal & exit /b 3)

 net user %UserName% /add
 wmic useraccount where "Name='%UserName%'" set PasswordExpires=False >nul
 net localgroup minGroup% %UserName% /add
 net localgroup %UserGroup% %UserName% /delete
 endlocal & exit /b 0
goto :eof

:GetGroupName
 if "%~1"=="" (echo Gruppe SID ikke angivet & 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 Fejl ved bestemmelse af gruppens navn fra 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 scriptet køres, vil det kontrollere, om der eksisterer en brugerkonto ‘Admin’, og oprette den, hvis den ikke findes. Brugerkontoen vil blive tilføjet til ‘Administratorer’-gruppen.

Unattend.xml – svarfil til sysprep.

reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f
                    1
                    Vis ikke nøgle side
                
                
                    reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f
                    2
                    Opret ikke konto
                
                
                    cmd.exe /c rd %systemdrive%Sysprep /s /q
                    3
                    Fjern mappe
                
            
        
        
            
                true
                Admin
            
        
    
    
        
            en-US; ru-RU
            ru-RU
            ru-RU
            
            ru-RU
        
        
            
                true
                true
                true
                true
                true
                1

Når systemet er færdiggjort i audit-tilstand, vil skriptet tilføje en kommando til registreringsdatabasen for at afslutte processen "sysprep.exe" for at undgå at skulle lukke sysprep-vinduet manuelt hver gang. Når systemet er færdiggjort i hilsen-tilstand, vil skriptet fjerne kommandoen til at lukke vinduet fra registreringsdatabasen og selv ændre arkitekturværdien i svarfilen til den aktuelle. Svarfilen indeholder parametre til at starte systemet uden brugerinteraktion og en kommando til at slette mappen "Sysprep" i roden af systemdisken.

Nu vil jeg færdiggøre systemet i audit-tilstand ved hjælp af "Sysprep.bat" og tage et systembillede. Jeg vil tage systembilledet med DISM og kun tage billedet af systempartitionen. Hvis du kun tager billedet af systempartitionen og ikke hele disken, så glem ikke at kopiere indholdet af mappen "WindowsSystem32Recovery" til den første partition i mappen "RecoveryWindowsRE" efter at have udrullet systemet. Dette skal gøres før operativsystemet starter, da mappen "WindowsSystem32Recovery" vil være tom efter opstart.

Trin 3 – russificering af systemet

Langpakke kan installeres uden internetforbindelse, hvis du har denne pakke. Hvis ikke, vil systemet selv downloade den fra internettet, når du tilføjer sproget i indstillingerne. Husk blot ikke at tage langpakken fra tidligere versioner af operativsystemet. For Windows 10 1809 skal sprogpakket være specifikt til Windows 10 1809.

Microsoft følger sin plan – en gradvis overførsel af indstillinger fra det klassiske menu til det nye, derfor finder du allerede ikke indstillingerne til at ændre sprog og installere langpakken i det klassiske kontrolpanel. Disse indstillinger findes nu kun i systemindstillingerne.

I audit-tilstand kan du støde på problemer med at åbne systemindstillingerne fra menuen "Start". For at åbne systemindstillingerne skal du køre kommandoen – "ms-settings:", bemærk kolon i slutningen af kommandoen, uden det vil kommandoen ikke fungere. Efter at have åbnet systemindstillingerne én gang med denne kommando, kan de åbnes via det grafiske menu.

Men i systemindstillingerne kan du installere sprogpakkene, hvis systemet er tilsluttet internettet; der er ikke mulighed for at vælge at installere sprogpakkene fra en lokal fil.

Jeg vil ikke beskrive lokaliseringsprocessen, da det vil gøre artiklen betydeligt tungere, især fordi lokaliseringsprocessen er detaljeret beskrevet her. Men jeg vil gerne henlede din opmærksomhed på en særlig egenskab ved ændring af systemets sprog efter installationen af sprogpakken via konsollen. Denne egenskab er beskrevet i den samme wiki, som jeg tidligere har linket til, i afsnittet »Tilføjelse af sprog til sproglisten«.

Jeg vil installere sprogpakken uden internetforbindelse.

Efter den fulde lokalisering af systemet skal du absolut oprette et systembillede.

Trin 4 – installation af nødvendige applikationer

Da der ikke er nogen appbutik i LTSB- og LTSC-systemer, medfører installationen af applikationer fra „Microsoft Store“ nogle vanskeligheder, nemlig – download af applikationen. For at downloade applikationer har selskabet „Adguard“ lavet en meget praktisk service – „Adguard Store“, som gør det muligt at få midlertidige links til download af applikationer og deres komponenter.

For at installere applikationen har du brug for filer med filendelserne „Appx“ og „AppxBundle“. Før installationen af selve applikationen skal du installere dens komponenter. Som regel kan komponenterne fra applikationen intuitivt skelnes fra hinanden ud fra filnavnet.

For ikke at gøre artiklen for lang vil jeg ikke beskrive installationsprocessen for applikationer i detaljer, især da der er en detaljeret instruktion. Men jeg vil tilføje endnu en metode til installation af applikationer til den aktuelle konto. Applikationer kan installeres ved hjælp af programmet „App Installer“, men for at installere applikationer kræves internetforbindelse, så applikationer kan installeres med et dobbeltklik på musen, og du får ikke brug for dets komponenter, da alle nødvendige komponenter vil blive downloadet og installeret. „App Installer“.

Og en lille påmindelse, ved installation af applikationen i den aktuelle konto vil det ikke være muligt at forsegle systemet. Sådan installeres applikationer, så du får mulighed for at forsegle systemet, kan ses i den ovennævnte instruktion. Og for at teste multi-kiosken er de allerede tilgængelige applikationer tilstrækkelige.

Trin 5 – oprettelse af konfigurationsfil til multi-kiosken

Nu er vi nået til det mest interessante – opsætning af kioskmode. Vi kigger på instruktionen for opsætning og ser. Først og fremmest skal vi oprette en konfigurations XML-fil, et fuldt eksempel på hvilket kan findes se her.

Lad os begynde med at indstille placeringen af fliserne. Den nemmeste måde at oprette en XML-konfiguration til fliseindstillinger er at eksportere deres nuværende tilstand.

Først tilføjer vi fliserne for de applikationer, vi har brug for, til menuen "Start". Vi kalder søgningen "Win+s", finder den ønskede app, højreklikker på den og vælger "Fastgør til startskærm".

Jeg har fastgjort følgende apps:

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

De sidste to apps blev fastgjort, da der ikke er andre universelle apps i standardudgaven af LTSC. Bemærk, at fliserne for klassiske apps henviser til genveje. Nu vil jeg ved at flytte fliserne direkte i menuen "Start" opdele de fastgjorte fliser i to grupper. For at oprette en ny gruppe fliser skal du trække flisen betydeligt højere eller lavere end de andre fliser, hvorefter en intuitiv separator vil blive fremhævet. Du kan navngive grupperne efter eget valg; for at gøre det, placer musen over gruppen, og når teksten "Navngiv gruppe" vises, klik med venstre musetast. Jeg vil kalde den første gruppe "Indstillinger", som vil indeholde fliserne "Indstillinger" og "Windows-sikkerhed". Den anden gruppe vil jeg kalde "Kontor-applikationer", som vil inkludere alle de øvrige fliser. Forresten kan hele grupper af fliser flyttes ved at trække dem ved de to striber, der er placeret øverst til højre for gruppens navn.

Da navnet på flisen "Windows-sikkerhed" ikke helt kan rumme titlen, vil jeg ændre dens størrelse til "Bred". For at ændre størrelsen på flisen skal du højreklikke på flisen og vælge "Ændre størrelse".

Efter indstillingen eksporterer vi den aktuelle tilstand ved at køre kommandoen i PowerShell-miljøet – "Export-StartLayout – path C:SysprepStartLayout.xml".

Dernæst er det nemmest ikke at oprette konfigurationsfilen selv, men tage et eksempel på filen herfra indstillinger – klik på knappen «Copy», indsæt indholdet i en notesblok og gem som «MultiAppKiosk.xml». Nu ændrer vi indstillingerne til vores. For at ændre indstillingerne for de knyttede fliser kopierer vi hele blokken «StartLayoutCollection» fra «StartLayout.xml» til «MultiAppKiosk.xml». For at tilføje applikationer til de tilladte skal du indsætte identifikatorerne for universelle applikationer i sektionen «AllowedApps» og i denne samme blok tilføje den fulde sti til eksekverbare filer for klassiske applikationer, som er angivet i egenskaberne for de genveje, som fliserne henviser til. For hurtigt at gå til genvejen, højreklik på den fastgjorte flise og følg menuen «Ekstra > Gå til placering for filen». Bemærk, at til angivelse af ID for den universelle applikation bruges parameteren «AppUserModelId», og til angivelse af den fulde sti til den klassiske applikation bruges parameteren «DesktopAppPath». Og en lille nuance, hvis du planlægger at bruge IE i et x64-system, skal du angive to stier for eksekverbare fil «Program FilesInternet Exploreriexplore.exe» og «Program Files (x86)Internet Exploreriexplore.exe».

Jeg vil ikke give adgang til mapper, så jeg fjerner sektionen «FileExplorerNamespaceRestrictions».

Visningen af proceslinjen vil ikke genere mig, så jeg lader alt være som det er i sektionen «Taskbar».

I eksemplet er der angivet to profiler, men jeg vil kun have én profil, så sektionen med den anden profil kan fjernes. Før du fjerner den, skal du være opmærksom på eksemplet med automatisk opstart af applikationen med argumenter.

I sektionen «Configs» er konti knyttet til profiler, vær opmærksom på, at mange konti kan være knyttet til én profil. Men da jeg kun er interesseret i én konto, sletter jeg alle bindinger undtagen den første – blokken «Config». I den tilbageværende binding skriver jeg brugernavnet «User».

Jeg har fået en sådan fil med parametre

MultiAppKiosk.xml

<![CDATA[
                    
                    
                      
                        
                          
                            
                            
                          
                          
                            
                            
                            
                            
                            
                          
                        
                      
                    
                  ]]>
          
          
      
  
  
      
          User

Når du laver dine XML-konfigurationsfiler, skal du huske, at hver profil skal have en unik ID, som ikke kun er unik inden for én XML-fil, men også inden for ét operativsystem. For at undgå forvirring kan det være en god idé at skabe en ny identifikator hver gang; dette kan gøres i PowerShell ved hjælp af kommandoen «[guid]::NewGuid()». Og husk at gemme filen i «UTF-8» kodning; hvis filen gemmes i «ANSI» kodning, vil du få en fejl under pakkeopbygningen, hvis der er kyrilliske tegn i XML-filen.

Trin 6 – Anvendelse af indstillinger for multi-kiosk

Lad os se på to metoder til at anvende indstillingerne beskrevet i konfigurationsfilen. Den første er ved hjælp af en forberedelsespakke, som skal oprettes i ICD. For nogle vil denne metode muligvis være mere velkendt. Den anden er ved at bruge «MDM Bridge WMI Provider»; denne metode virker mere praktisk.

Metode nr. 1

Hvis du ikke har ICD, downloader vi ADK og installer det. Installation af ADK er meget enkel, og du kan forlade standardkomponenterne.

Vi starter ICD, klikker på flisen «Ekstra forberedelse», angiver navn og mappe til projektet og klikker på «Næste». I det næste vindue vælger vi «Alle versioner af Windows til stationære computere» og klikker på «Næste». Import af forberedelsespakken kan ignoreres; klik på «Færdig».

Åbn nedtrækningsmenuen «Runtime-indstillinger», derefter undermenuen «AssignedAccess» og vælg punktet «MultiAppAssignedAccessSettings». I den øverste del af midtersektionen i ICD-vinduet klikker vi på knappen «Gennemse» og angiver placeringen af XML-filen med indstillingerne. For en sikkerheds skyld kan projektet gemmes ved at trykke på «Ctrl+s». I den øverste venstre del af ICD vælger vi «Eksporter» i nedtrækningsmenuen og vælger punktet «Forberedelsespakke». Som ejer vælger vi «IT-administrator», alle andre spørgsmål kan overspringes ved at klikke på «Næste», og til sidst klikker vi på «Byg» og «Færdig».

I det installerede system skal vi ikke glemme at oprette brugeren «User»; han må ikke tilføjes til gruppen «Administrators», ellers vil multi-kiosken ikke fungere. Jeg oprettede brugeren i konsollen «Computerhåndtering» med en ubegrænset adgangskode.

Nu starter vi forberedelsespakken i det tidligere installerede system. Efter anvendelse af forberedelsespakken vil startmenuen og administratorens indstillinger ændre sig. I venstre kolonne i startmenuen skal knapperne «Dokumenter», «Billeder», «Indstillinger» forsvinde. Hvis startmenuen ikke har ændret sig, er noget gået galt. Den installerede pakke kan fjernes ved at åbne vinduet «Indstillinger > Konti > Adgang til arbejds- eller skolemæssige konti > Tilføjelse eller fjernelse af forberedelsespakken».

Hvis startmenuen har ændret sig, er indstillingerne anvendt på systemet, log ind som brugeren, for hvem der er konfigureret MultiKiosk, og se resultatet.

Metode nr. 2

Anvendelse af indstillinger ved hjælp af «MDM Bridge WMI Provider» beskrevet her. Fordelen ved denne metode er fleksibiliteten i brugen og muligheden for at slippe af med mange manuelle operationer, der er nødvendige for at oprette forberedelsespakken. Her kan alle lave en løsning, der præcist passer til dem. Jeg har lavet et par scripts til mig selv.

MiltiKiosk.bat – script til opstart

@echo off
chcp 1251>nul

if not exist "%~dp0psexec.exe" call :ShowMessage "‡‡‡‡‡‡‡‡‡‡‡‡‡For at scriptet kan fungere, kræves filen psexec.exe‡‡For at afslutte scriptet, tryk på en vilkårlig tast"&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 Ingen PS-filer fundet med begyndelsen af navnet - "%~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

Funktion ConvertEncoding ([string]$From, [string]$To) {
    Begynd{$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, ''}
}

Funktion ShowMessage ($Message='', $Align=0) {
    Prøv {$Align = [decimal]$Align} Fang {Return 'Kun tal kan angives for parameteren 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) {
        Prøv {$String = [int]$String} Fang {}
        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, 'Fejl ved hentning af konfigurationsobjekt', 2, 'Tryk "Enter" for at afslutte scriptet') -Align 2; Read-Host; Exit}

Funktion MainMenu() {
    ShowMessage (13, ' 0 - Afslut', ' 1 - Vælg XML-fil til installation', ' 2 - Vis nuværende konfiguration for multi-kiosk', ' 3 - Fjern indstillinger for multi-kiosk', 1)
    $local:PromptText = 'Vælg handling'
    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, 'Begyndt konfiguration') -Align 2; Write-Host $MultiAppKiosk.Configuration; ShowMessage -Message ('Slut på konfiguration', 1, 'Tryk "Enter" for at vende tilbage til menuen', 1) -Align 2; Read-Host}
            3 {$MultiAppKiosk.Configuration = $Null; Set-CimInstance -CimInstance $MultiAppKiosk; ShowMessage -Message (1, 'Kommando til fjernelse af indstillinger udført', 1) -Align 2}
            DEFAULT {ShowMessage 'Ugyldig værdi valgt'}
        }
        if ($Selections -contains $Select) {Clear-Host; ShowMessage (15, ' 0 - Afslut', ' 1 - Vælg XML-fil til installation', ' 2 - Vis nuværende konfiguration for multi-kiosk', ' 3 - Fjern indstillinger for multi-kiosk', 1)}
    }
}

Funktion XMLSelection() {
    Clear-Host

    if (!(Test-Path -Path $PSScriptRoot'XML')) {ShowMessage -Message (13, 'Katalog ikke fundet', $('"'+$PSScriptRoot+'XML"'), 1, 'Tryk "Enter" for at vende tilbage til den foregående menu') -Align 2; Read-Host; Return}

    $local:XMLList = @()
    $XMLList += Get-ChildItem -Path $PSScriptRoot'XML' -name -filter '*.xml'
    if ($XMLList.Count -eq  0) {ShowMessage -Message (13, 'Ingen XML-filer fundet i kataloget', $('"'+$PSScriptRoot+'XML"'), 1, 'Tryk "Enter" for at vende tilbage til den foregående menu') -Align 2; Read-Host; Return}

    [int]$local:Indent = 13 - $XMLList.Count / 2; if ($Indent -lt 1) {$Indent = 1}
    ShowMessage ($Indent, ' 0 - Vend tilbage til den foregående menu')
    for ($i=0; $i -le $XMLList.GetUpperBound(0); $i++) {Write-Host $(' '+($i+1)+' - '+$XMLList[$i])}
    Write-Host
    $local:PromptText = 'Vælg fil til installation'
    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 $('Denne kommando anvender indstillinger fra filen '+$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 ('Ugyldig værdi valgt')} 
        }
    }
}

MainMenu

Hvis du vil bruge min løsning, skal du gemme de nævnte scripts i en mappe med deres originale navne og placere filen "PsExec.exe" i samme mappe. Opret en mappe kaldet "XML" i denne mappe, og kopier XML-filerne til den for at konfigurere multikiosken. Jeg vil bruge den samme fil som i den første metode.

MultiAppKiosk.xml

<![CDATA[
                    
                    
                      
                        
                          
                            
                            
                          
                          
                            
                            
                            
                            
                            
                          
                        
                      
                    
                  ]]>
          
          
      
  
  
      
          User

Lidt om skriptets funktioner. Skriptet er designet til at bruge XML-filer med "UTF8"-kodning; hvis du vil bruge "ANSI"-kodning, skal du fjerne parameteren "encoding UTF8" fra filens læseparameter. XML-filer skal placeres i "XML"-mappen uden at ændre tegnene, da skriptet selv vil erstatte specialtegnene med de tilsvarende betegnelser. For ikke at forveksle GUID'erne, der binder brugere til profiler, kan du bare angive brugerens nummer eller navn i krøllede parenteser, alt indhold i krøllede parenteser vil blive erstattet med GUID'er.

Det er meget nemt at bruge skriptet; du starter det og vælger den ønskede mulighed. For at ændre den aktuelle konfiguration til en ny behøver du ikke at slette den aktuelle; den vil blive overskrevet. Glem ikke at oprette de brugere, der er angivet i konfigurationsfilen.

Når du ser den aktuelle konfiguration af multikiosken i den samme session, som den blev anvendt i, vil erstatningssymboler blive vist i stedet for specialtegnene. Efter at have skiftet session (genstartet skriptet) vil alle specialtegn blive vist i deres originale form.

Trin 7 - forsegling af systemet

Multikiosken fungerer, så langt så godt, men alligevel...

Hvis alt går som planlagt, så overser du noget.

Glem ikke, at vi stadig skal oversætte systemet fra audit-tilstand til velkomsttilstand. Men vi er klar, så lad os køre "Sysprep.bat", vælge punkt 2, systemet bliver forseglet. Tænd enheden, systemet starter, og vi logger ind på den bruger, som multikiosken er sat op til, men vi kan ikke logge ind. Efter teksten "Velkommen" vises teksten "Logget af".

Først ønskede jeg kun at beskrive løsningen på problemet, men senere besluttede jeg at beskrive trinene til at identificere problemet og finde den mest enkle løsning, da mange læsere sikkert vil have uafklarede tvivl - "Hvad hvis...". Jeg mener, at beskrivelsen af forskellige eksperimenter vil spare dig for betydelig tid, hvis du ønsker at finde en anden løsning. For at informationen skal være så præcis som mulig, og for at sikre, at der ikke er nogen fejl, vil jeg beskrive eksperimenterne i formatet "gjorde - noterede". Det vil sige, at jeg vil gentage de beskrevne eksperimenter.

Eksperimenter

Hvad er det vi har fået. Systemet har to brugerkonti:

«Admin» – i gruppen «Administratorer»
«User» – i gruppen «Brugere»
I audit-tilstand fungerede multikiosk, men efter vi lukkede det, virker det ikke.

Eksperiment 1

Vi fjerner den installerede forberedelsespakke, sletter brugeren «User» i snap-in "Computeradministration" og opretter en ny bruger med navnet «User», anvender forberedelsespakken, logger ind på brugerkontoen «User» – det virker ikke. Logger ind som «Admin», sletter brugeren «User» fra gruppen «Brugere», tilføjer til gruppen «Administratorer», logger ind som «User» – det virker ikke. Logger ind som «Admin», fjerner forberedelsespakken med multikiosk, logger ind som «User» – kunne komme ind, men selvfølgelig fungerer multikioskmode ikke, da forberedelsespakken blev slettet.

Eksperiment 2

Vi uploader systembilledet – oversat i audit-tilstand.

OS'en startede, vi trykker på «Win+r», da sysprep-vinduet automatisk er blevet lukket, udfører vi kommandoen «sysprep», i det åbnede vindue starter vi «sysprep». Indstillingerne for sysprep i vinduet: «Overgang til systemets velkomstvindue (OOBE)», «Forberede til brug», «Genstart». Vi klikker på «OK» og venter på OS'ens velkomst. Vi besvarer spørgsmålene ved den første opstart af systemet: «Fortsæt på det valgte sprog?» – «dansk»; område – Danmark; tastaturopsætning – Dansk; tilføj den anden tastaturopsætning – spring over; «Lad os tilslutte dig til netværket» – «Spring over for nu»; tilslut til internettet – nej; EULA – acceptere; «Hvem vil bruge denne computer» – «Test»; oprettelse af adgangskode – jeg lader feltet være tomt; nemt arbejde på forskellige enheder – nej; privatlivsindstillinger – acceptere. OS'en startede, i «Computerstyring»-snapin'et opretter vi en bruger med navnet «User», tilføjer forberedelsespakken. Resultatet – fungerer ikke.

Eksperiment 3

Vi uploader systembilledet – oversat i audit-tilstand.

OS'en startede, vi tilslutter systemet til internettet, udfører kommandoen «gpedit.msc» og i sektionen «Windows Update Center» aktiverer vi indstillingen «Aktivér anbefalede opdateringer via automatisk opdatering», genstarter for en sikkerheds skyld. I opdateringscentret klikker vi på «Kontroller for opdateringer» og genstarter indtil alle opdateringer er installeret. Vi afbryder systemet fra internettet. Vi starter «sysprep» i grafisk tilstand og gentager alle de handlinger, der er beskrevet i det forrige trin med at starte «sysprep»-værktøjet indtil tilføjelsen af forberedelsespakken. Resultatet – fungerer ikke.

Eksperiment 4

Vi uploader systembilledet – engelsksproget i audit-tilstand.

Vi starter «sysprep» i grafisk tilstand, pakker OS'en ind med samme indstillinger som under eksperiment 2. Ved den første opstart af systemet vælger vi de samme indstillinger som i eksperiment 2, med undtagelse af regionale og sproglige indstillinger, da der ikke er noget dansk sprog. Vi opretter også brugeren «User» og tilføjer forberedelsespakken. Resultatet – fungerer. Altså er problemet relateret til lokaliseringen.

Eksperiment 5

Vi uploader systembilledet – oversat i audit-tilstand.

I «Computerstyring»-snapin'et opretter vi brugeren «User», tilføjer forberedelsespakken, logger ind på brugerkontoen «User», og multikiosk fungerer.

Vi logger ud af kontoen og logger ind med kontoen «Admin». Åbner PowerShell med administratorrettigheder og udfører kommandoen «Dism /online /Get-Intl», og vi ser «Standard brugergrænssprog: en-US».

Vi booter fra USB-drevet til WinPE, det installerede operativsystem er på drev E. Udfører kommandoen «Dism /image:E: /Set-UILang:da-DK». Tjekker resultatet, udfører «Dism /image:E: /Get-Intl» og ser «Standard system UI-sprog: da-DK».

Vi logger ind i systemet med kontoen «User», multikiosk fungerer ikke.

For klart at fastslå årsagssammenhængen til problemet vil vi forsøge at gøre multikiosken både funktionel og ikke-funktionel igen.

Vi booter fra USB-drevet til WinPE, det installerede operativsystem er på drev E. Udfører kommandoen «Dism /image:E: /Set-UILang:en-us». Tjekker resultatet, udfører «Dism /image:E: /Get-Intl» og ser «Standard system UI-sprog: en-US».

Vi logger ind i systemet med kontoen «User», multikiosk fungerer.

Vi booter fra USB-drevet til WinPE, det installerede operativsystem er på drev E. Udfører kommandoen «Dism /image:E: /Set-UILang:da-DK». Tjekker resultatet, udfører «Dism /image:E: /Get-Intl» og ser «Standard system UI-sprog: da-DK».

Vi logger ind i systemet med kontoen «User», multikiosk fungerer ikke.

Det vil sige, at vi kan se en klar afhængighed mellem kioskmaskinens funktionalitet og værdien af standard brugergrænssprog. Er der yderligere faktorer, der kan påvirke multikioskens funktionalitet?

Eksperiment 6

For eksperimentets renhed geninstallerer vi systemet. Vi uploader et systembillede – oversat til dansk i audit-tilstand.

Vi kører «sysprep» i grafisk tilstand, pakker operativsystemet med de samme indstillinger som under eksperiment 2. Vi venter på operativsystemets velkomst og besvarer spørgsmålene: «Fortsætte på valgt sprog?» – «Engelsk (USA)»; region – Danmark; tastaturlayout – Dansk. Alle indstillinger er valgt som i eksperiment 2.

Vi ser på indstillingerne for standard brugergrænssprog. Udfører kommandoen «Dism /online /Get-Intl» og ser «Standard system UI-sprog: en-US». I værktøjet «Computeradministration» opretter vi brugeren «User», tilføjer en forberedelsespakke, logger ind på kontoen «User», multikiosk fungerer.

Vi forsøger at bryde kiosken ved at ændre standard brugergrænssprog. Vi logger ind i brugeren «Test», der blev oprettet ved første opstart af systemet, og aktiverer automatisk login, så systemet ikke logger ind med kontoen «User» straks. Udfører «netplwiz», vælger brugeren «Test», fjerner markeringen af «Krav om indtastning af brugernavn og adgangskode» og anvender indstillingerne.

Booting from the flash drive into WinPE. Execute the command «Dism /image:E: /Set-UILang:da-dk». Check the result, execute «Dism /image:E: /Get-Intl» and see «Default system UI language: da-DK».

Booting into the system, trying to log into the account «User», the kiosk mode works. That is, it cannot be broken. But can it be forced to work this way?

Experiment 7

Vi uploader systembilledet – oversat i audit-tilstand.

Launching «Sysprep.bat», selecting option 2. Booting into the system, in the «Computer Management» snap-in, creating the user «User», adding the preparation package, logging into the account «User», the kiosk mode does not work.

Booting from the flash drive into WinPE. Execute the command «Dism /image:E: /Set-UILang:en-us». Check the result, execute «Dism /image:E: /Get-Intl» and see «Default system UI language: en-US».

Booting into the system, trying to log into the account «User», the kiosk mode does not work.

It turns out that by changing the default UI language setting, you can influence the operation of the kiosk mode only when the system is in audit mode or during the first boot after sealing the system. This means you will have to seal the system with an answer file selecting English as the system language, and then change the system settings to make the interface Russian. Not a very good solution. Maybe the problem can be solved by installing a language pack or additional language packs?

Experiment 8

Vi uploader systembilledet – engelsksproget i audit-tilstand.

Connect to the internet, in the system settings go to the «Language» section, select «Add language», choose the language «Danish», click «Next», keep the installation options default, click «Install». After installing the language pack, reboot the system, now it is localized. Disconnect the system from the internet, run «Sysprep.bat», select option 2.

After booting the system, in the «Computer Management» snap-in, create the user «User», add the preparation package, log into the account «User», the kiosk mode does not work.

Experiment 9

Let's try to localize the system before installation, in offline mode. It will also provide a brief guide on localizing the distribution.

Jeg tager et USB-drev med en ren original distributionsfil – X21-96381. Det vil være drev «E». For at montere billeder opretter jeg mapper: «c:MountInstall», «c:MountWinre», «c:MountBoot». Jeg tager sæt med lokalisering – X21-87814. Og i mappen «c:Mount» kopierer jeg fra det sæt pakkerne: «Microsoft-Windows-Client-Language-Pack_x86_da-dk.cab», «lp.cab», «WinPE-Setup_da-dk.cab». Jeg åbner konsollen med administrative rettigheder. Jeg mener, at de følgende kommandoer vil være forståelige uden kommentarer.

Lokalisering kommandoer

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_da-dk.cabcode
dism /Image:Installcode /Set-AllIntl:da-dk
dism /Image:Install /Set-TimeZone:"Eastern 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:da-dk
dism /Image:Winre /Set-TimeZone:"Eastern Standard Time"code
dism /Unmount-Image /MountDir:Winre /Commitcode

dism /Image:Install /Gen-LangINI /distribution:E: /Set-AllIntl:da-DKcode
dism /image:Install /Set-SetupUILang:DA-dk /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:da-dk
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_da-dk.cabcode
dism /Image:Bootcode /Set-AllIntl:da-dk
copy e:sourceslang.ini Bootsourceslang.ini /ycode
dism /Unmount-Image /MountDir:Boot /Commit

Vi booter fra USB-drevet, vælger dansk som sprog og installerer systemet på en ren disk. Når systemet beder om at vælge region, trykker vi «Ctrl+Shift+F3». I værktøjet «Computer Administration» opretter vi brugeren «User», tilføjer forberedelsespakken, logger ind på kontoen «User», og computerens kiosk fungerer ikke.

Vi booter fra USB-drevet i WinPE. Udfører kommandoen «Dism /image:E: /Set-UILang:da-dk».

Vi logger ind i systemet, prøver at logge ind på kontoen «User», og kiosken fungerer.

Det ser ud til, at det ikke handler om metoderne til at tilføje pakken, lad os prøve at tilføje yderligere pakker.

Eksperiment 10

Vi tager USB-drevet, som vi forberedte i det foregående trin.

Vi tager pakken «Feat on Demand» – X21-87815. I mappen «c:Mount» kopierer jeg fra den pakke: «Microsoft-Windows-LanguageFeatures-Basic-da-dk-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-OCR-da-dk-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-Handwriting-da-dk-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-TextToSpeech-da-dk-Package~31bf3856ad364e35~x86~~.cab».

Vi tager pakken «Feat on Demand RDX Updt» – X21-99781. Jeg kopierer pakkerne fra den til mappen «c:Mount»: «Microsoft-Windows-RetailDemo-OfflineContent-Content-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-RetailDemo-OfflineContent-Content-ru-ru-Package~31bf3856ad364e35~x86~~.cab».

Vi åbner konsollen med administratorrettigheder og udfører kommandoerne:

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 op fra USB-stick, vælger russisk sprog og installerer systemet på en ren disk. Når systemet beder om at vælge region, trykker vi «Ctrl+Shift+F3». I «Computer Management» opretter vi brugeren «User», tilføjer forberedelsespakken, logger ind på «User»-kontoen. Jeg fik en sort skærm, der hang længe, så jeg udførte en hård genstart af systemet.

Vi fjerner forberedelsespakken, logger ind som «User», genstarter systemet, tilføjer forberedelsespakken, og multikiosk fungerer ikke.

Vi booter fra USB-drevet i WinPE. Udfører kommandoen «Dism /image:E: /Set-UILang:da-dk».

Vi logger ind i systemet, prøver at logge ind på kontoen «User», og kiosken fungerer.

Omgå problemet

Rigtige helte. Går altid udenom!

Forskellige metoder til installation af lokaliseringspakker løste ikke problemet, så det bliver nødvendigt at installere sproget «en-us» ved den første opstart efter indpakning, og derefter ændre sprogindstillingerne efter første opstart.

Vi uploader systembilledet – oversat i audit-tilstand.

I filen «Unattend.xml» indtaster vi «en-US» i parameteren, kører «Sysprep.bat», vælger punkt 2 og ser, hvad vi har fået. Introduktionsskærmen er på engelsk, og multikiosk fungerer. Det betyder, at vi skal tilføje en kommando i «Unattend.xml» for at ændre introduktionsspråket. Og for dette er det nødvendigt at udføre kommandoen «control intl.cpl,,/f:» med angivelse af konfigurationsfilen, der vil blive anvendt til at kopiere de aktuelle indstillinger til introduktionsskærmen. Indholdet af konfigurationsfilen vil se sådan ud.

Da der konfiguration af den nuværende bruger skal kopieres, skal kommandoen udføres, efter at brugeren er logget ind i systemet. Det betyder, at vi har brug for det. Der er en lille "men"; udførelsen vil ske efter indlogning af brugeren med administratorrettigheder. Jeg vil helst undgå at oprette en ekstra fil, som vil være nødvendig for at udføre kommandoen. Det ville være bedst at realisere hele løsningen i én fil - "Unattend.xml". Til dette er det blot nødvendigt at udføre en kommando, der opretter konfigurationsfilen. Jeg tænker, at jeg vil oprette konfigurationsfilen ved hjælp af kommandoen "echo" i "cmd", men i den skal vinklerne være skjult med cirkumfleks. Det vil sige, at kommandoen til at oprette konfigurationsfilen ser således ud.

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

Men denne kommando skal inkluderes i XML, som har sine egne krav til brug af specialtegn:

Specialtegn
Pladsholder værdi

>
>

<
<

&
&

‘
'

“
"

Som resultat fik jeg følgende kommando til at oprette konfigurationsfilen 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;

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

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

Derefter sletter vi den tidligere oprettede fil og genstarter systemet, da ændringerne træder i kraft efter genstart.

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

Som resultat fik jeg følgende svarsfiler til sysprep.

Unattend.xml

reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f
                    1
                    Vis ikke nøgle side
                
                
                    reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f
                    2
                    Opret ikke konto
                
                
                    cmd.exe /c rd %systemdrive%Sysprep /s /q
                    3
                    Slet mappe
                
            
        
        
            
                true
                Admin
            
        
    
    
        
            en-US; da-DK
            da-DK
            en-US
            
            da-DK
        
        
            
                true
                true
                true
                true
                true
                1
            
            
                
                    cmd.exe /c echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>^<gs:UserList^>^<gs:User UserID="Current" CopySettingsToSystemAcct="true" / ^>^</gs:UserList^>^</gs:GlobalizationServices^>"%TMP%Config.xml"
                    OpretConfig
                    1
                
                
                    control intl.cpl,,/f:"%TMP%Config.xml"
                    BrugConfig
                    2
                
                
                    cmd.exe /c del "%TMP%Config.xml" /q&shutdown /r /f /t 00
                    SletConfig
                    3

Tjekker…

Vi uploader systembilledet – oversat i audit-tilstand.

Vi udskifter filen Unattend.xml med en ny, kører «Sysprep.bat», vælger punkt 2 og ser, hvad vi har fået. Ved første opstart er velkomstskærmen på engelsk, systemet genstarter. Velkomstskærmen er på dansk, og multi-kiosk fungerer.

Hvis du har spørgsmål vedrørende opsætning og licensering af Windows 10 IoT Enterprise, kontakt venligst mse@quarta.ru eller besøg vores hjemmeside quarta-embedded.ru.
Svar på nogle spørgsmål kan du finde i vores wiki eller på vores YouTube-kanal

Artikelens forfatter: Vladimir Borisenkov, teknisk ekspert hos Kvarte Teknologier.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster