Inleiding
– de marketingnaam van de nieuwste uitgave van Windows 10. De lancering van deze versie werd aangekondigd in september 2018 en heeft versie 1809, waarbij 18 het jaar en 09 de maand is. Over de nieuwe uitgave Windows 10 1809 zijn veel artikelen geschreven, maar de meeste daarvan zijn gewijd aan allerlei 'franje', 'mooiheden' en verschillende functies die in huishoudelijke situaties gewild zijn.
In dit artikel zal het alleen gaan over de functionaliteit die mogelijk interessant is voor fabrikanten van vastgestelde apparatuur. Namelijk over de nieuwe mogelijkheden van de 'Kiosk' modus. Ook zal het onderwerp van de naamsverandering van de servicemodellen voor de bedrijfs-edities van Windows worden besproken.
Oud servicemodel met een nieuwe naam
Ik begin met een kleine uitleg; in het bedrijfssegment van de edities van Windows zijn er twee servicemodellen waarlangs Windows updates ontvangt. De servicemodellen hebben een letteraanduiding. De servicetakken worden momenteel LTSC en SAC genoemd.
LTSC betekent (met langdurige ondersteuning). Voorheen heette dit kanaal LTSB - Long Term Servicing Branch; Microsoft heeft eenvoudigweg de naam van het servicekanaal gewijzigd, de ondersteuning zelf is hetzelfde gebleven.
Microsoft heeft ook de naam van de servicetak CBB - Current Branch for Business gewijzigd, deze tak heet nu SAC - . Opnieuw is alleen de naam veranderd.
Het moet ook worden vermeld dat er voor de servicetakken LTSC en SAC verschillende distributies van Windows worden gebruikt.
Een beetje over de nieuwe kioskmodus in SAC
Zoals ik al zei, hebben LTSC en SAC verschillende distributies. LTSC heeft geen standaard universele applicaties en de app store, terwijl SAC dat wel heeft. Dus is er in LTSC geen Edge-browser, terwijl deze in SAC aanwezig is. Bij het instellen van de kiosk hoeft men alleen de Edge-browser te kiezen, dan zijn er nu twee modi beschikbaar:
- Als digitaal teken of interactieve display
- Als openbare browser
Ik zal niet ingaan op de configuratie van deze modi, aangezien de instellingen zeer eenvoudig zijn en via de grafische interface kunnen worden uitgevoerd. Maak gewoon een gebruiker aan die niet tot de groep 'Beheerders' behoort, schakel de kioskmodus in met behulp van EDGE en bekijk de werking van deze modi.
Kiosk met meerdere applicaties
Sommigen denken dat het gebruik van een licentie betekent dat er slechts één applicatie op het apparaat kan draaien, maar dat is in werkelijkheid niet zo. Het apparaat moet zijn ontworpen voor het uitvoeren van één specifieke zakelijke taak en de gebruiker mag geen toegang hebben tot het bureaublad. Microsoft heeft nu zelf een tool gegeven om meerdere applicaties te gebruiken. Deze modus heet "multi-app kiosk", en voor de eenvoud noem ik het verder "multikiiosk". In dit artikel zullen we de configuratie van deze modus bekijken met behulp van een configuratiepakket en enkele kenmerken van deze modus.
Een beetje over de modus "Multikiiosk"
Bij het inloggen in een gebruikersaccount waarvoor de multikiiosk-modus is ingesteld, zal het systeem in tabletmodus werken. Het Startmenu wordt over het volledige scherm weergegeven, waarin de tegelapplicaties worden weergegeven.
Lijst van de belangrijkste instellingen en mogelijkheden van de modus:
- Configuratie voor meerdere gebruikers of groepen
- Elke gebruiker of groep kan individuele instellingen toegewezen krijgen
- Mogelijkheid om universele en klassieke applicaties te gebruiken
- Mogelijkheid om één van de applicaties automatisch te starten bij het inloggen van de gebruiker
- Werking van applicaties op basis van een witte lijst
- Toegang tot mappen op basis van een witte lijst
Let op punt 5. Standaard is alleen toestemming gegeven voor de applicaties die essentieel zijn voor het functioneren van het systeem; andere applicaties moeten aan de lijst van toegestane programma's worden toegevoegd. Dus nu is het niet nodig om AppLocker apart in te stellen. Overigens, om conflicten met AppLocker-instellingen te vermijden, zullen alle ingestelde AppLocker-regels in de multikiiosk-modus niet van toepassing zijn.
In punt 6 wordt een goede mogelijkheid aangegeven, maar op dit moment is het alleen mogelijk om schrijfrechten voor de map "Downloads" te geven. De modus staat het gebruik van universele en klassieke applicaties toe. Alle instellingen van de modus worden gespecificeerd in een XML-bestand, waarin ook instellingen voor een kiosk met één applicatie kunnen worden opgegeven.
Laten we nu proberen dit alles in te stellen...
Wat hebben we nodig...
- In de eerste plaats hebben we het systeem nodig dat de multikiiosk-modus ondersteunt. demoversie
- Een XML-editor naar keuze
- Om de instellingen van de multiki kiosk toe te passen:
- Voor methode #1 — ICD, dat deel uitmaakt van ADK. ADK kan
- Voor methode #2 – de PsExec-tool. De tool kan
Hij zei – "Laten we gaan!"
Alle experimenten zal ik uitvoeren op Windows 10 IoT Enterprise 1809 LTSC x32 commerciële versie, en niet de demonstratieversie. Het systeem zal zonder activatie zijn, omdat het ontbreken van activatie geen invloed heeft op de functionaliteit van het systeem. Ik heb 32-bits gekozen omdat het minder ruimte in beslag neemt en het werken met systeembeelden sneller zal gaan.
Stap 1 – installatie
De installatie van Win 10 IoT Enterprise verschilt niet van de installatie van Win 10 Enterprise, dus ik ga het hele installatieproces niet beschrijven, ik zal alleen enkele nuances noemen.
Voor de zekerheid een herinnering, installeer het systeem niet bovenop de bestaande installatie. Wanneer de installer vraagt waar het systeem geïnstalleerd moet worden, verwijder dan alle partities op de toekomstige syste schijf en geef de ongepartitioneerde schijf op.
Installeer het systeem zonder verbinding met het internet, zodat het systeem niets overbodigs ophaalt.
Omdat we systeemback-ups zullen maken en het in auditmodus zullen verpakken, kunnen we wat tijd besparen door het systeem direct na de installatie op te starten in auditmodus. Wanneer het systeem je vraagt om een regio te kiezen "Laten we beginnen met de regio. Is dit correct" druk je gewoon op "Ctrl+Shift+F3".
Stap 2 – maak een systeembeeld
Omdat we met het systeem gaan experimenteren en verschillende nieuwe instellingen zullen uitproberen, is het mogelijk dat er iets misgaat en we het systeem naar de oorspronkelijke staat moeten terugbrengen. Om snel naar de oorspronkelijke staat terug te keren, moet je een systeembeeld maken. Het enige dat ik zal doen, is de "gentleman set" kopiëren – een script en een antwoordbestand. Alle bestanden bevinden zich in de map "Sysprep", die ik naar de hoofdmap van de syste schijf zal kopiëren. En uiteraard zal ik deze "gentleman set" met jullie delen.
Sysprep.bat – voor het verpakken van het systeem.
@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 "‡‡‡Fout bij het aanmaken van een nieuw beheerdersaccount "minName%"‡‡Druk op een toets om het script te beëindigen"&pause>nul&exit)
pushd "%~dp0"
cls
call :ShowMessage ‡‡‡‡‡‡‡‡‡‡
echo 1 - Systeem in auditmodus vastleggen
echo 2 - Systeem in welkomstmodus vastleggen
:Select
set /p Choice="Voer het menu-itemnummer in: "
if "%Choice%"=="1" (goto Audit)
if "%Choice%"=="2" (goto OOBE)
echo.&echo Ongeldig geselecteerde waarde.&goto Select
exit
:Audit
call :ShowMessage "‡‡‡‡‡Systeem vastleggen in auditmodus"
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 "‡‡‡‡‡Systeem vastleggen in welkomstmodus"
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 Gebruikersnaam niet opgegeven&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 Groep SID niet opgegeven&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 Fout bij het bepalen van de groepsnaam voor 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 :eofBij het uitvoeren van het script wordt gecontroleerd of het account 'Admin' bestaat en zal het worden aangemaakt als het niet bestaat. Het account zal aan de groep 'Beheerders' worden toegevoegd.
Unattend.xml - antwoordbestand voor sysprep.
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f
1
Toon geen sleutelpagina
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f
2
Maak geen account aan
cmd.exe /c rd %systemdrive%Sysprep /s /q
3
Verwijder map
true
Admin
en-US; ru-RU
ru-RU
ru-RU
ru-RU
true
true
true
true
true
1Wanneer je de auditmodus afsluit, zal het script een opdracht aan het register toevoegen om het proces 'sysprep.exe' te beëindigen, zodat je het sysprep-venster niet telkens handmatig hoeft te sluiten. Bij het afsluiten in de welkomstmodus zal het script de opdracht om het venster te sluiten uit het register verwijderen en zelf de architectuurwaarde in het antwoordenbestand aanpassen naar de huidige. In het antwoordenbestand bevinden zich parameters voor het opstarten van het systeem zonder tussenkomst van de gebruiker en de opdracht voor het verwijderen van de map 'Sysprep' op de hoofdpartitie.
Nu zal ik het systeem in auditmodus afsluiten met behulp van 'Sysprep.bat' en een systeemimage maken. Ik zal de systeemimage maken met DISM en alleen de systeempartitie imageren. Als je alleen de systeempartitie imageret en niet de hele schijf, vergeet dan niet om de inhoud van de map 'WindowsSystem32Recovery' naar de map 'RecoveryWindowsRE' op de eerste partitie te kopiëren na het uitrollen van het systeem. Dit moet gedaan worden voordat je het besturingssysteem opstart, want na het opstarten zal de map 'WindowsSystem32Recovery' al leeg zijn.
Stap 3 – Russificatie van het systeem
Het taalpakket kan worden geïnstalleerd zonder internetverbinding, mits je dit pakket hebt. Als je het niet hebt, zal het systeem het zelf downloaden via internet wanneer je de taal in de instellingen toevoegt. Neem alleen geen taalpakket van eerdere versies van het besturingssysteem. Voor Windows 10 1809 moet het taalpakket specifiek voor Windows 10 1809 zijn.
Microsoft volgt zijn plan – een geleidelijke overgang van de instellingen uit het klassieke menu naar het nieuwe, daarom zul je in het klassieke configuratiescherm geen instellingen meer vinden voor het wijzigen van de taal en het installeren van een taalpakket. Deze instellingen zijn nu alleen beschikbaar in de systeemeisen.
In auditmodus kun je problemen ondervinden bij het openen van de systeemeisen vanuit het menu 'Start'. Om de systeemeisen te openen, voer je de opdracht - 'ms-settings:' uit, let op de dubbele punt aan het einde van de opdracht, zonder deze zal de opdracht niet werken. Na een enkele opening van de systeemeisen met deze opdracht, kan het ook via het grafische menu worden geopend.
Maar in de systeemeisen kun je het taalpakket instellen als het systeem met internet is verbonden; er is geen mogelijkheid om een taalpakket uit een lokaal bestand te installeren.
Ik zal het proces van het lokaliseren van het systeem niet beschrijven, omdat dit het artikel aanzienlijk zou verzwaren, vooral omdat het proces van lokalisering gedetailleerd . Maar ik wil uw aandacht vestigen op een bijzonderheid van het wijzigen van de systeemtaal na het installeren van het talpakket via de console. Dit kenmerk wordt beschreven in dezelfde wiki waarnaar ik eerder heb gelinkt, in de sectie .
Ik zal het talpakket installeren zonder verbinding met internet.
Na de volledige lokalisatie van het systeem, is het absoluut noodzakelijk om een systeem afbeelding te maken.
Stap 4 - installatie van de benodigde applicaties
Aangezien er in de LTSB- en LTSC-systemen geen app store is, brengt de installatie van applicaties uit de „Microsoft Store“ bepaalde moeilijkheden met zich mee, met name het downloaden van de applicatie. Voor het downloaden van applicaties heeft het bedrijf „Adguard“ een zeer handige service gemaakt - , waarmee tijdelijke downloadlinks voor applicaties en hun componenten kunnen worden verkregen.
Voor de installatie van de applicatie heeft u bestanden met de extensies „Appx“ en „AppxBundle“ nodig. Voordat u de applicatie zelf installeert, is het noodzakelijk om de componenten ervan te installeren. Gewoonlijk kunnen de componenten van de applicatie intuïtief aan de bestandsnaam worden onderscheiden.
Om het artikel niet te lang te maken, zal ik het installatieproces van applicaties niet in detail beschrijven, vooral omdat er een voor de installatie beschikbaar is. Maar ik voeg nog een andere manier toe om applicaties aan het huidige account te installeren. Applicaties kunnen worden geïnstalleerd met behulp van het programma , maar voor het installeren van applicaties is een internetverbinding vereist, zodat applicaties met een dubbele muisklik kunnen worden geïnstalleerd en u geen componenten nodig heeft, alle benodigde componenten worden gedownload en geïnstalleerd. .
En een kleine herinnering: bij het installeren van een applicatie in het huidige account kan het systeem niet worden verzegeld. Hoe applicaties te installeren zodat er een mogelijkheid is om het systeem te verzegelen, staat in de hierboven genoemde handleiding. Voor de controle van de werking van de multi-kiosk zijn de al aanwezige applicaties al voldoende.
Stap 5 - Creëren van het configuratiebestand voor de multi-kiosk
Hier zijn we dan aangekomen bij het meest interessante - de configuratie van de kioskmodus. Laten we kijken in de voor configuratie en zien we. In de eerste plaats hebben we een configuratie XML-bestand nodig, waarvan een volledig voorbeeld beschikbaar is. .
Laten we beginnen met het instellen van de tegels. De eenvoudigste manier om een XML-configuratie voor de tegelinstelling te maken is .
Als eerste voegen we de tegels van de toepassingen die we nodig hebben toe aan het Startmenu. Roep de zoekfunctie op met 'Win+s', zoek de gewenste toepassing, klik met de rechtermuisknop en kies 'Vastpinnen aan Startscherm'.
Ik heb de volgende toepassingen vastgepind:
- Kladblok
- Rekenmachine
- Internet Explorer
- Paint
- WordPad
- Instellingen
- Windows-beveiliging
De laatste twee toepassingen zijn vastgepind omdat er in de standaardlevering van LTSC geen andere universele toepassingen zijn. Merk op dat de tegels van klassieke toepassingen naar snelkoppelingen verwijzen. Nu zal ik door de tegels te verslepen in het Startmenu de vastgepinde tegels in twee groepen verdelen. Om een nieuwe groep tegels te maken, versleep je een tegel significant boven of onder andere tegels, waarbij een intuïtieve scheidingslijn verschijnt. Je kunt de groepen naar eigen inzicht benoemen; plaats de muis boven de groep en wanneer de tekst 'Groep benoemen' verschijnt, klik dan met de linkermuisknop. De eerste groep noem ik 'Instellingen', die zal de tegels 'Instellingen' en 'Windows-beveiliging' bevatten. De tweede groep noem ik 'Kantoorapplicaties', die alle andere tegels zal bevatten. Overigens kun je hele groepen tegels verplaatsen door ze te slepen aan de twee streepjes rechtsboven de groepsnaam.
Aangezien de naam op de tegel 'Windows-beveiliging' niet volledig past, zal ik de grootte wijzigen naar 'Breed'. Om de grootte van de tegel te wijzigen, klik met de rechtermuisknop op de tegel en kies 'Grootte wijzigen'.
Na de configuratie exporteren we de huidige staat, voer de opdracht uit in de PowerShell-omgeving – 'Export-StartLayout – path C:SysprepStartLayout.xml'.
Vervolgens is het het eenvoudigste om niet zelf een instellingsbestand te maken, maar instellingen – klik op de knop «Copy», plak de inhoud in een notitieblok en sla op als «MultiAppKiosk.xml». Nu passen we de instellingen aan naar eigen wens. Om de instellingen voor de vastgemaakte tegels te wijzigen, kopieer je het hele blok «StartLayoutCollection» uit «StartLayout.xml» naar «MultiAppKiosk.xml». Om apps aan de toegestane lijst toe te voegen, moet je de identificatoren van universele apps in het gedeelte «AllowedApps» invoegen en in ditzelfde blok het volledige pad naar de uitvoerbare bestanden van klassieke apps toevoegen, zoals gespecificeerd in de eigenschappen van de snelkoppelingen waarnaar de tegels verwijzen. Voor een snelle toegang tot de snelkoppeling klik je met de rechtermuisknop op de vastgemaakte tegel en ga je naar het menu «Extra > Ga naar bestandslocatie». Let op, voor het opgeven van de ID van de universele app wordt de parameter «AppUserModelId» gebruikt, terwijl voor het opgeven van het volledige pad naar de klassieke app de parameter «DesktopAppPath» wordt gebruikt. En nog een klein detail, als je van plan bent om IE te gebruiken in een x64-systeem, moet je in de lijst met toegestane apps twee paden voor het uitvoerbare bestand opgeven: «Program FilesInternet Exploreriexplore.exe» en «Program Files (x86)Internet Exploreriexplore.exe».
Ik zal geen toegang tot de mappen geven, dus verwijder ik de sectie «FileExplorerNamespaceRestrictions».
Het tonen van de taakbalk stoort me niet, dus laat ik in de sectie «Taskbar» alles zoals het is.
In het voorbeeld zijn er twee profielen vermeld, maar ik zal slechts één profiel hebben, dus de sectie met het tweede profiel kan worden verwijderd. Let voor het verwijderen op het voorbeeld van het automatisch starten van de app met argumenten.
In de sectie «Configs» zijn de accounts gekoppeld aan profielen, let op dat er meerdere accounts aan één profiel kunnen worden gekoppeld. Maar omdat ik alleen geïnteresseerd ben in één account, zal ik alle koppelingen behalve de eerste verwijderen – de blokken «Config». In de overgebleven koppeling vul ik de gebruikersnaam in als «User».
Ik heb zo'n bestand met parameters gekregen
MultiAppKiosk.xml
<![CDATA[
]]>
GebruikerBij het aanmaken van uw XML-configuratiebestanden, vergeet niet dat elk profiel een unieke ID moet hebben, niet alleen binnen een XML-bestand, maar binnen één besturingssysteem. Idealiter kunt u elke keer een nieuwe identifier creëren om verwarring te voorkomen; dit kan in PowerShell met de opdracht "[guid]::NewGuid()". Zorg er ook voor dat u het bestand opslaat in de codering "UTF-8", want als het bestand is opgeslagen in de codering "ANSI", krijgt u een foutmelding tijdens het samenstellen van het voorbereidingspakket als er Cyrillische tekens in het XML-bestand staan.
Stap 6 – Toepassen van instellingen van de multi-kiosk
Laten we twee manieren bekijken om de instellingen die in het configuratiebestand zijn beschreven toe te passen. De eerste manier is met behulp van een voorbereidingspakket, dat u moet aanmaken in ICD. Voor iemand kan deze methode misschien meer vertrouwd aanvoelen. De tweede manier is met de "MDM Bridge WMI Provider"; deze methode lijkt mij handiger.
Methode №1
Voor wie geen ICD heeft, en installeren we het. De installatie van ADK is heel eenvoudig, u kunt de standaardcomponenten behouden.
Start ICD, klik op de tegel "Extra voorbereiding", geef de naam en de map van het project op en klik op "Volgende". In het volgende venster kiest u "Alle versies van Windows voor desktopcomputers" en klikt u op "Volgende". U kunt het importeren van het voorbereidingspakket overslaan; klik op "Klaar".
Vouw het vervolgkeuzemenu "Uitvoeringsparameters" uit, vouw vervolgens het submenu "AssignedAccess" uit en selecteer de optie "MultiAppAssignedAccessSettings". Bovenaan het middengedeelte van het ICD-venster klikt u op de knop "Bladeren" en geeft u de locatie op van het XML-bestand met instellingen. Voor de zekerheid kunt u het project opslaan door "Ctrl+s" in te drukken. Boven links in ICD kiezen we "Exporteren" in het vervolgkeuzemenu, kiezen de optie "Voorbereidingspakket". Als eigenaar kiezen we "IT-beheerder"; alle andere vragen kunnen worden overslagen door "Volgende" te klikken en aan het einde klikken we op "Bouwen" en "Klaar".
Vergeet in het geïnstalleerde systeem niet om een gebruiker "User" aan te maken; deze mag niet aan de groep "Administrators" worden toegevoegd, anders zal de multi-kiosk niet werken. Ik heb de gebruiker aangemaakt in de snap-in "Computerbeheer" met een wachtwoord zonder vervaldatum.
Laten we het voorbereidingspakket starten in het eerder geïnstalleerde systeem. Na het toepassen van het voorbereidingspakket zullen het startmenu en de beheerder veranderen. In de linkerkolom van het startmenu zouden de knoppen "Documenten", "Afbeelding", "Instellingen" moeten verdwijnen. Als het startmenu niet is veranderd, is er iets misgegaan. Het geïnstalleerde pakket kan worden verwijderd door het venster "Instellingen > Accounts > Toegang tot werk- of schoolaccount > Aan toevoegen of verwijderen van het voorbereidingspakket" te openen.
Als het startmenu is veranderd, zijn de instellingen toegepast op het systeem; log in met de gebruiker waarvoor de multikiosk is ingesteld en bekijk het resultaat.
Methode №2
Toepassen van instellingen met behulp van "MDM Bridge WMI Provider" . Het gemak van deze methode ligt in de flexibiliteit van gebruik en de mogelijkheid om veel handmatige acties te vermijden die nodig zijn om een voorbereidingspakket te maken. Iedereen kan hier zelf een oplossing bedenken die voor hem het meest handzaam is. Voor mijzelf heb ik de volgende twee scripts gemaakt.
MiltiKiosk.bat – script om te starten
@echo off
chcp 1251>nul
if not exist "%~dp0psexec.exe" call :ShowMessage "‡‡‡‡‡‡‡‡‡‡‡‡‡Het bestand psexec.exe is nodig voor het uitvoeren van het script‡‡Druk op een toets om het script te beëindigen"&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 Geen PS-bestanden met de naam - "%~n0" gevonden&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 :eofMiltiKiosk_Ver.12.ps1 – hoofdscripte
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 'Voor de parameter Align kan alleen een nummer worden opgegeven' | 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, 'Fout bij het ophalen van objectinstellingen', 2, 'Druk op "Enter" om het script af te sluiten') -Align 2; Read-Host; Exit}
Function MainMenu() {
ShowMessage (13, ' 0 - Afsluiten', ' 1 - Kies XML-bestand voor installatie', ' 2 - Toon huidige configuratie van de multi-kiosk', ' 3 - Verwijder instellingen van de multi-kiosk', 1)
$local:PromptText = 'Kies een actie'
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, 'Start configuratie') -Align 2; Write-Host $MultiAppKiosk.Configuration; ShowMessage -Message ('Einde configuratie', 1, 'Druk op "Enter" om terug naar het menu te gaan', 1) -Align 2; Read-Host}
3 {$MultiAppKiosk.Configuration = $Null; Set-CimInstance -CimInstance $MultiAppKiosk; ShowMessage -Message (1, 'Verwijdering van instellingen voltooid', 1) -Align 2}
DEFAULT {ShowMessage 'Ongeldige waarde geselecteerd'}
}
if ($Selections -contains $Select) {Clear-Host; ShowMessage (15, ' 0 - Afsluiten', ' 1 - Kies XML-bestand voor installatie', ' 2 - Toon huidige configuratie van de multi-kiosk', ' 3 - Verwijder instellingen van de multi-kiosk', 1)}
}
}
Function XMLSelection() {
Clear-Host
if (!(Test-Path -Path $PSScriptRoot'XML')) {ShowMessage -Message (13, 'Map niet gevonden', $('"'+$PSScriptRoot+'XML"'), 1, 'Druk op "Enter" om terug te keren naar het vorige 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, 'Geen XML-bestanden gevonden in de map', $('"'+$PSScriptRoot+'XML"'), 1, 'Druk op "Enter" om terug te keren naar het vorige menu') -Align 2; Read-Host; Return}
[int]$local:Indent = 13 - $XMLList.Count / 2; if ($Indent -lt 1) {$Indent = 1}
ShowMessage ($Indent, ' 0 - Terug naar het vorige menu')
for ($i=0; $i -le $XMLList.GetUpperBound(0); $i++) {Write-Host $(' '+($i+1)+' - '+$XMLList[$i])}
Write-Host
$local:PromptText = 'Kies bestand voor installatie'
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 $('Deze opdracht is om instellingen uit bestand '+$XMLList[$Select-1]+' toe te passen');
$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 ('Ongeldige waarde geselecteerd')}
}
}
}
MainMenuAls je mijn oplossing wilt gebruiken, bewaar dan de eerder genoemde scripts in één map met hun originele namen en plaats het bestand "PsExec.exe" ook in deze map. Maak in dezelfde map een map genaamd "XML" en kopieer daar de XML-bestanden voor de configuratie van de multikiosk heen. Ik zal hetzelfde bestand gebruiken als in de eerste methode.
MultiAppKiosk.xml
<![CDATA[
]]>
GebruikerEen beetje over de kenmerken van het script. Het script is ontworpen voor het gebruik van XML-bestanden met de codering "UTF8"; als je de codering "ANSI" wilt gebruiken, verwijder dan de parameter "encoding UTF8" uit de bestandleesparameter. Plaats XML-bestanden in de map "XML" zonder de symbolen te vervangen; het script vervangt speciale symbolen automatisch door de overeenkomstige aanduidingen. Om niet in de GUID's van gebruikersbinding aan profielen te verdwalen, kun je eenvoudig het nummer of de gebruikersnaam tussen haakjes opgeven; alles wat tussen haakjes staat, zal worden vervangen door GUID's.
Het gebruik van het script is heel eenvoudig: je start het op en kiest de benodigde optie. Voor het wijzigen van de huidige configuratie naar een nieuwe is het niet nodig de huidige te verwijderen; deze wordt overschreven. Vergeet niet gebruikers aan te maken die in het configuratiebestand zijn vermeld.
Bij het bekijken van de huidige configuratie van de multikiosk in dezelfde sessie waarin deze is toegepast, worden in plaats van speciale symbolen de combinaties van vervangende symbolen weergegeven. Na het wisselen van sessie (het opnieuw starten van het script) worden alle speciale symbolen in originele vorm weergegeven.
Stap 7 – het afdichten van het systeem
De multikiosk werkt, maar dat lijkt alles te zijn...
Als alles volgens plan verloopt, merk je waarschijnlijk iets niet op.
Vergeet niet dat we het systeem ook uit de auditmodus in de verwelkomingsmodus moeten vertalen. We zijn er toch klaar voor, we starten "Sysprep.bat", kiezen optie 2, het systeem wordt afgedicht. We schakelen het apparaat in, het systeem start op, we loggen in op het gebruikersaccount waarvoor de multikiosk is ingesteld en kunnen niet inloggen. Na de tekst "Welkom" verschijnt de tekst "Afmelden".
Aanvankelijk wilde ik alleen de oplossing voor het probleem beschrijven, maar later besloot ik ook de stappen voor het identificeren van het probleem en het zoeken naar de eenvoudigste oplossing te beschrijven, omdat ik me kan voorstellen dat velen die lezen met vage twijfels zitten: "Wat als zo...". Ik denk dat de beschrijving van verschillende experimenten u aanzienlijk tijd zal besparen als u een andere oplossing wilt vinden. Om de informatie zo nauwkeurig mogelijk te houden en om nogmaals te bevestigen dat er geen fouten zijn, zal ik de beschrijving van de experimenten doen in het formaat "gedaan - genoteerd". Dat wil zeggen dat ik de beschreven experimenten opnieuw zal uitvoeren.
Experimenten
Wat hebben we tot nu toe bereikt? In het systeem zijn er twee accounts:
«Admin» – in de groep «Beheerders»
«User» – in de groep «Gebruikers»
In de auditmodus werkte de multi-kiosk, nadat we het vastlegden – werkt niet meer.
Experiment 1
Verwijder het geïnstalleerde voorbereidingspakket, verwijder de gebruiker «User» in de snap-in «Computerbeheer» en maak een nieuwe gebruiker aan met de naam «User», pas het voorbereidingspakket toe, log in op het account «User» – werkt niet. Log in als «Admin», verwijder de gebruiker «User» uit de groep «Gebruikers», voeg toe aan de groep «Beheerders», log in op de naam «User» – werkt niet. Log in als «Admin», verwijder het voorbereidingspakket met de multi-kiosk, log in op de naam «User» – het lukte om in te loggen, maar natuurlijk werkt de multi-kioskmodus niet omdat het voorbereidingspakket is verwijderd.
Experiment 2
Laad het systeembeeld – gelokaliseerd in auditmodus.
Het OS is opgestart, druk op 'Win+r', aangezien het venster van sysprep automatisch is gesloten, voeren we de opdracht 'sysprep' uit, in het geopende venster starten we 'sysprep'. De instellingen van sysprep in het venster: 'Overgang naar de welkomstscherm van het systeem (OOBE)', 'Voorbereiding voor gebruik', 'Opnieuw opstarten'. Druk op 'OK' en wacht op de welkomstscherm van het OS. Beantwoord de vragen bij de eerste opstart van het systeem: 'Doorgaan in de geselecteerde taal?' - 'Nederlands'; regio - Nederland; toetsenbordindeling - Nederlands; voeg een tweede toetsenbordindeling toe - overslaan; 'Laten we u met het netwerk verbinden' - 'Voorlopig overslaan'; maak verbinding met het internet - nee; licentieovereenkomst - accepteren; 'Wie gaat deze computer gebruiken?' - 'Test'; wachtwoord instellen - laat het veld leeg; comfortabel werken op verschillende apparaten - nee; privacy-instellingen - accepteren. Het OS is opgestart, in de tool 'Computerbeheer' maken we een gebruiker aan met de naam 'User', we voegen het voorbereidingspakket toe. Resultaat - werkt niet.
Experiment 3
Laad het systeembeeld – gelokaliseerd in auditmodus.
Het OS is opgestart, we verbinden het systeem met internet, voeren de opdracht 'gpedit.msc' uit en in de sectie 'Windows Update Center' schakelen we de parameter 'Aanbevolen updates inschakelen via automatische updates' in, voor de zekerheid herstarten we het systeem. In het updatecentrum klikken we op 'Updates zoeken' en herstarten we tot alle updates zijn geïnstalleerd. We koppelen het systeem los van internet. We starten 'sysprep' in grafische modus en herhalen alle stappen die zijn beschreven in de vorige stap bij het starten van de tool 'sysprep' tot het toevoegen van het voorbereidingspakket. Resultaat - werkt niet.
Experiment 4
We uploaden het systeem image - Engelstalig in audit modus.
We starten 'sysprep' in grafische modus, we verpakken het OS met dezelfde parameters als tijdens experiment 2. Bij de eerste opstart van het systeem kiezen we dezelfde parameters als in experiment 2, met uitzondering van de regionale en taalspecificaties omdat de Nederlandse taal er niet is. Op dezelfde manier maken we een gebruiker aan met de naam 'User' en voegen het voorbereidingspakket toe. Resultaat - werkt. Dit betekent dat het probleem verband houdt met de lokalisatie.
Experiment 5
Laad het systeembeeld – gelokaliseerd in auditmodus.
In de tool 'Computerbeheer' maken we een gebruiker 'User' aan, voegen het voorbereidingspakket toe, gaan naar het account 'User', de multimedia kiosk werkt.
Log uit en log in met het account 'Admin'. Start PowerShell met beheerdersrechten, voer de opdracht 'Dism /online /Get-Intl' uit en zie 'Standaard gebruikersinterface-taal: en-US'.
Start op vanaf een USB-stick in WinPE, het geïnstalleerde besturingssysteem bevindt zich op schijf E. Voer de opdracht 'Dism /image:E: /Set-UILang:ru-ru' uit. Bekijk het resultaat, voer 'Dism /image:E: /Get-Intl' uit en zie 'Standaard systeemgebruikersinterface-taal: ru-RU'.
Log in op het systeem met het account 'User', de multikiosk werkt niet.
Om de oorzaak van het probleem duidelijk vast te stellen, proberen we de multikiosk opnieuw werkend en niet-werkend te maken.
Start op vanaf een USB-stick in WinPE, het geïnstalleerde besturingssysteem bevindt zich op schijf E. Voer de opdracht 'Dism /image:E: /Set-UILang:en-us' uit. Bekijk het resultaat, voer 'Dism /image:E: /Get-Intl' uit en zie 'Standaard systeemgebruikersinterface-taal: en-US'.
Log in op het systeem met het account 'User', de multikiosk werkt.
Start op vanaf een USB-stick in WinPE, het geïnstalleerde besturingssysteem bevindt zich op schijf E. Voer de opdracht 'Dism /image:E: /Set-UILang:ru-ru' uit. Bekijk het resultaat, voer 'Dism /image:E: /Get-Intl' uit en zie 'Standaard systeemgebruikersinterface-taal: ru-RU'.
Log in op het systeem met het account 'User', de multikiosk werkt niet.
Dat wil zeggen, we kunnen een duidelijke afhankelijkheid zien van de werking van de kiosk van de waarde van de standaard gebruikersinterface-taal. Zijn er misschien nog andere factoren die de werking van de multikiosk beïnvloeden?
Experiment 6
Voor de zuiverheid van het experiment herinstalleren we het systeem. We laden het systeemimage – gerussificeerd in auditmodus.
Start 'sysprep' in grafische modus, verzegel het besturingssysteem met dezelfde instellingen als tijdens experiment 2. Wacht totdat het besturingssysteem start en beantwoord de vragen: 'Doorgaan in geselecteerde taal?' – 'Engels (Verenigde Staten)'; regio – Rusland; toetsenbordindeling – Russisch. Alle parameters zijn verder gekozen zoals in experiment 2.
Bekijk de instellingen van de standaard gebruikersinterface-taal. Voer de opdracht 'Dism /online /Get-Intl' uit en zie 'Standaard systeemgebruikersinterface-taal: en-US'. In de beheerconsole creëren we de gebruiker 'User', voegen we het voorbereidingspakket toe, loggen in op het account 'User', de multikiosk werkt.
We proberen de kiosk te breken door de standaard gebruikersinterface-taal te wijzigen. Log in op de gebruiker 'Test', die is aangemaakt bij de eerste opstart van het systeem, en schakel automatische aanmelding in zodat het systeem niet onmiddellijk in het account 'User' opstart. Voer 'netplwiz' uit, kies de gebruiker 'Test', haal het vinkje weg bij 'Vereisen invoer van gebruikersnaam en wachtwoord' en pas de instellingen toe.
We boot from the flash drive into WinPE. We execute the command "Dism /image:E: /Set-UILang:nl-NL". We check the result, execute "Dism /image:E: /Get-Intl" and see "Default system UI language: nl-NL".
We boot into the system, attempt to log into the account "User", the kiosk mode works. That is, it cannot be broken. But can it be made to work this way?
Experiment 7
Laad het systeembeeld – gelokaliseerd in auditmodus.
We launch "Sysprep.bat", choose option 2. We boot into the system, in the "Computer Management" snap-in we create the user "User", add the preparation package, log into the account "User", the kiosk mode does not work.
We boot from the flash drive into WinPE. We execute the command "Dism /image:E: /Set-UILang:en-US". We check the result, execute "Dism /image:E: /Get-Intl" and see "Default system UI language: en-US".
We boot into the system, attempt to log into the account "User", the kiosk mode does not work.
It turns out that by changing the default user interface language setting, you can influence the functionality of the kiosk mode only when the system is in audit mode or during the first boot after sealing the system. This means that we have to seal the system with an answer file in which the system language will be set to English, and then change 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 packages?
Experiment 8
We uploaden het systeem image - Engelstalig in audit modus.
We connect to the internet, go to the system settings in the "Language" section, select "Add language", choose the language "Dutch", click "Next", leave the installation settings as default, click "Install", after installing the language pack we restart the system, now it is localized. We disconnect the system from the internet, run "Sysprep.bat", choose option 2.
After booting the system in the "Computer Management" snap-in, we 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. At the same time, there will be a brief overview of localizing the distribution.
Ik neem een USB-stick met de schone originele distributie – X21-96381. Deze zal schijf "E" zijn. Voor het mounten van afbeeldingen maak ik mappen aan: "c:MountInstall", "c:MountWinre", "c:MountBoot". Ik neem een pakket met lokalisaties – X21-87814. En ik kopieer daaruit naar de map "c:Mount" de pakketten: "Microsoft-Windows-Client-Language-Pack_x86_nl-nl.cab", "lp.cab", "WinPE-Setup_nl-nl.cab". Ik start de console met administratorrechten. Ik denk dat de verdere commando's zonder commentaar duidelijk zullen zijn.
Lokalisatiecommando's
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_nl-nl.cabcode
dism /Image:Installcode /Set-AllIntl:nl-nl
dism /Image:Install /Set-TimeZone:"Dutch 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:nl-nl
dism /Image:Winre /Set-TimeZone:"Dutch Standard Time"code
dism /Unmount-Image /MountDir:Winre /Commitcode
dism /Image:Install /Gen-LangINI /distribution:E: /Set-AllIntl:nl-NLcode
dism /image:Install /Set-SetupUILang:NL-nl /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:nl-nl
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_nl-nl.cabcode
dism /Image:Bootcode /Set-AllIntl:nl-nl
copy e:sourceslang.ini Bootsourceslang.ini /ycode
dism /Unmount-Image /MountDir:Boot /CommitWe starten op vanaf de USB-stick, kiezen de Nederlandse taal en installeren het systeem op een schone schijf. Wanneer het systeem vraagt om een regio te kiezen, drukken we op "Ctrl+Shift+F3". In de tool "Computerbeheer" maken we de gebruiker "User", voegen we het voorbereidingspakket toe en gaan we in de account "User"; de multikiosk werkt niet.
We starten op vanaf de USB-stick in WinPE. We voeren het commando "Dism /image:E: /Set-UILang:nl-nl" uit.
We starten in het systeem, proberen in de account "User" in te loggen; de multikiosk werkt.
Het lijkt erop dat het probleem niet bij de methode van het toevoegen van het pakket ligt, laten we proberen extra pakketten toe te voegen.
Experiment 10
We nemen de USB-stick die we in de vorige stap hebben voorbereid.
We nemen het pakket "Feat on Demand" – X21-87815. In de map "c:Mount" kopieer ik daaruit de pakketten: «Microsoft-Windows-LanguageFeatures-Basic-nl-nl-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-OCR-nl-nl-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-Handwriting-nl-nl-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-TextToSpeech-nl-nl-Package~31bf3856ad364e35~x86~~.cab».
Neem het pakket «Feat on Demand RDX Updt» – X21-99781. Ik kopieer de pakketten naar de map «c:Mount»: «Microsoft-Windows-RetailDemo-OfflineContent-Content-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-RetailDemo-OfflineContent-Content-ru-ru-Package~31bf3856ad364e35~x86~~.cab».
Start de opdrachtprompt met beheerdersrechten en voer de volgende commando's uit:
Teams
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 /CommitStart op vanaf de USB-stick, kies de Russische taal en installeer het systeem op een schone schijf. Wanneer het systeem vraagt om een regio te kiezen, druk op «Ctrl+Shift+F3». In de «Computerbeheer» console maak ik een gebruiker aan met de naam «User», voeg het voorbereidingspakket toe, en log in op het account «User». Ik kreeg een zwart scherm dat lang bleef hangen, daarom heb ik een harde herstart uitgevoerd.
Verwijder het voorbereidingspakket, log in onder de gebruiker «User», herstart het systeem, voeg het voorbereidingspakket toe, multiscreen werkt niet.
We starten op vanaf de USB-stick in WinPE. We voeren het commando "Dism /image:E: /Set-UILang:nl-nl" uit.
We starten in het systeem, proberen in de account "User" in te loggen; de multikiosk werkt.
Omzeiling van het probleem
Echte helden. Gaan altijd om het probleem heen!
Diverse methoden voor het installeren van taalpakketten hebben het probleem niet opgelost, dus moet ik bij de eerste opstart na het verpakken de taal «en-us» instellen, en daarna de taalinstellingen wijzigen.
Laad het systeembeeld – gelokaliseerd in auditmodus.
In het bestand «Unattend.xml» vul ik de parameter in als «en-US», start «Sysprep.bat», kies optie 2 en kijk wat we hebben bereikt. Het welkomstscherm is in het Engels, multiscreen werkt – klopt. Dus ik moet een commando toevoegen aan «Unattend.xml» voor wijziging van de welkomsttaal. Hiervoor moet ik het commando «control intl.cpl,,/f:» uitvoeren met opgave van het configuratiebestand, waarin wordt beschreven hoe de huidige instellingen naar het welkomstscherm moeten worden gekopieerd. De inhoud van het configuratiebestand ziet er als volgt uit.
Omdat we de instellingen van de huidige gebruiker gaan kopiëren, moet de opdracht worden uitgevoerd nadat de gebruiker is ingelogd in het systeem. Dit betekent dat we ... nodig hebben. Er is echter één klein 'maar': de uitvoering zal plaatsvinden nadat de gebruiker met beheerdersrechten is ingelogd. Ik wil geen extra bestand maken dat nodig is voor het succesvolle uitvoeren van de opdracht. Het is beter om de oplossing in één bestand - 'Unattend.xml' - te implementeren. Hiervoor hoeft alleen de opdracht te worden uitgevoerd die het configuratiebestand maakt. Ik denk dat ik het configuratiebestand met de opdracht 'echo' in de 'cmd' omgeving ga maken, maar daarin moeten de hoekige haken geescaped worden met een circumflex. Dus, de opdracht om het configuratiebestand te maken is als volgt.
echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>^<gs:UserList^>^<gs:User UserID="Current" CopySettingsToSystemAcct="true"/ ^>^< /gs:UserList^>^< /gs:GlobalizationServices^>>Config.xmlMaar we moeten deze opdracht in XML plaatsen, die zijn eigen vereisten heeft voor het gebruik van speciale symbolen:
Speciaal symbool
Vervangende waarde
>
>
<
<
&
&
‘
'
“
"
Dus, om het configuratiebestand te maken, ziet de opdracht voor 'FirstLogonCommands' er als volgt uit.
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"Vervolgens wordt de opdracht uitgevoerd met behulp van het configuratiebestand.
control intl.cpl,,/f:"%TMP%Config.xml"Daarna verwijderen we het eerder gemaakte bestand en herstarten we het systeem, want de wijzigingen worden pas na een herstart toegepast.
cmd.exe /c del "%TMP%Config.xml" /q&&shutdown /r /f /t 00Uiteindelijk heb ik zo'n antwoordenbestand voor sysprep gekregen.
Unattend.xml
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f
1
Toon de sleutelpagina niet
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f
2
Geen account aanmaken
cmd.exe /c rd %systemdrive%Sysprep /s /q
3
Verwijder map
true
Admin
en-US; nl-NL
nl-NL
en-US
nl-NL
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"
AanmakenConfiguratie
1
control intl.cpl,,/f:"%TMP%Config.xml"
GebruikConfiguratie
2
cmd.exe /c del "%TMP%Config.xml" /q&shutdown /r /f /t 00
VerwijderConfiguratie
3Bezig met controleren…
Laad het systeembeeld – gelokaliseerd in auditmodus.
We vervangen het bestand Unattend.xml door een nieuwe, starten "Sysprep.bat" op, kiezen optie 2 en bekijken het resultaat. Bij de eerste opstart verschijnt het welkomstscherm in het Engels, het systeem herstart. Het welkomstscherm in het Russisch, de kioskmodus werkt.
Als je vragen hebt over de configuratie en licensing van Windows 10 IoT Enterprise, neem dan contact op via of bezoek onze website .
Antwoorden op enkele vragen kun je vinden in of op onze
Auteur van het artikel: Borisenkov Vladimir, technisch expert bij Kvartha Technologie.
Bron: habr.com
