Windows 10 IoT Enterprise 2019 - multi-kioskmodus

Introductie

Windows 10 IoT Enterprise 2019 is de marketingnaam voor de volgende release van Windows 10. De release van deze versie werd respectievelijk aangekondigd in september 2018, het heeft versie 1809, 18 is het jaar, 09 is de maand. Er zijn veel artikelen geschreven over de nieuwe release van Windows 10 1809, maar de meeste zijn gewijd aan verschillende "bogen", "schoonheden" en verschillende functionaliteiten waar thuis veel vraag naar is.
In dit artikel wordt alleen de functionaliteit besproken waar mogelijk veel vraag naar is bij fabrikanten van apparaten voor vaste doeleinden. Namelijk over de nieuwe mogelijkheden van de “Kiosk” -modus. Het onderwerp van het wijzigen van de namen van serviceschema's voor Windows-edities van het zakelijke segment zal ook worden besproken.

Oud serviceschema met nieuwe naam

Laat ik beginnen met een korte uitleg: in het zakelijke segment van Windows-edities zijn er twee serviceschema's volgens welke Windows updates ontvangt. Serviceschema's hebben een letteraanduiding. Momenteel heten de servicetakken LTSC en SAC.

LTSC staat voor Servicekanaal op lange termijn (met langdurig onderhoud). Voorheen heette zo'n kanaal LTSB - Long Term Servicing Branch, Microsoft veranderde simpelweg de naam van het servicekanaal, de service zelf bleef hetzelfde.

Microsoft veranderde ook de naam van de servicetak CBB - Current Branch for Business, nu heet deze servicetak SAC - Halfjaarlijks kanaal. Nogmaals, alleen de naam is veranderd.

Maar er moet worden vermeld dat de LTSC- en SAC-servicebranches verschillende Windows-distributies gebruiken.

Iets over de nieuwe kioskmodus bij SAC

Zoals ik al zei, hebben LTSC en SAC verschillende distributies. LTSC heeft geen standaard universele apps of een app store, maar SAC wel. Dienovereenkomstig heeft LTSC geen Edge-browser, maar SAC wel. Als u de Edge-browser selecteert bij het instellen van een kiosk, zijn er nu twee modi beschikbaar:

  1. Als digitaal bord of interactief display
  2. Zoals een openbare browser

Ik zal niet stilstaan ​​bij het instellen van deze modi, omdat... De installatie is heel eenvoudig en gebeurt in een grafische interface. Maak gewoon een gebruiker aan die geen lid is van de groep Administrators, schakel de kioskmodus voor hem in met EDGE en kijk hoe deze modi werken.

Kiosk met veel toepassingen

Sommige mensen denken dat gelicentieerd gebruik Windows 10 IoT Enterprise impliceert de werking van slechts één applicatie op het apparaat, in feite is dit niet het geval. Het apparaat moet zijn ontworpen om één enkele zakelijke taak uit te voeren en de gebruiker mag geen toegang hebben tot een desktop. Nu heeft Microsoft zelf de tool gegeven om veel applicaties te gebruiken. Deze modus wordt “multi-app kiosk” genoemd; hierna zal ik het kortheidshalve “multikiosk” noemen. In dit artikel zullen we kijken naar het instellen van deze modus met behulp van het softwarepakket en enkele kenmerken van deze modus.

Iets over de Multikiosk-modus

Wanneer u inlogt op een gebruikersaccount waarvoor de multikioskmodus is geconfigureerd, werkt het systeem in tabletmodus. Het Start-menu wordt uitgebreid naar volledig scherm en toont toepassingstegels.

Lijst met basisinstellingen en modusmogelijkheden:

  1. Instellen voor meerdere gebruikers of groepen
  2. Aan elke gebruiker of groep kunnen individuele instellingen worden toegewezen
  3. Mogelijkheid om universele en klassieke applicaties te gebruiken
  4. De mogelijkheid om automatisch een van de applicaties te starten wanneer de gebruiker inlogt
  5. Toepassingen op de witte lijst
  6. Toegang tot mappen via een witte lijst

Het is de moeite waard om op punt 5 te letten. Standaard mogen alleen die applicaties werken die nodig zijn om het systeem te laten werken; andere applicaties moeten worden toegevoegd aan de lijst met toegestane applicaties. Die. Nu hoeft u AppLocker niet afzonderlijk te configureren. Om conflicten met AppLocker-instellingen te voorkomen, zijn in de multi-kioskmodus overigens niet alle geconfigureerde AppLocker-regels van toepassing.

Punt 6 geeft een goede optie aan, maar op dit moment is het alleen mogelijk om schrijfrechten te geven aan de map “Downloads”. Met deze modus kunt u universele en klassieke applicaties gebruiken. Alle modusinstellingen worden gespecificeerd in een XML-bestand, waarin u ook instellingen voor een enkele applicatiekiosk kunt opgeven.

Laten we nu proberen alles in te stellen...

Wat hebben we nodig...

  1. Allereerst hebben we het systeem zelf nodig, dat de multikiosk-modus ondersteunt. Hier kunt u downloaden demo versie
  2. Instructies voor het opzetten van een multikiosk
  3. Elke XML-editor
  4. Multikiosk-instellingen toepassen:
    1. Voor methode nr. 1 - ICD, die deel uitmaakt van de ADK. ADK is mogelijk Download hier
    2. Voor methode nr. 2 - het PsExec-hulpprogramma. Het hulpprogramma kan zijn Download hier

Hij zei: "Laten we gaan!"

Ik zal alle experimenten uitvoeren op de commerciële versie van Windows 10 IoT Enterprise 1809 LTSC x32, niet op een demoversie. Het systeem wordt niet geactiveerd omdat gebrek aan activering heeft geen invloed op de functionaliteit van het systeem. Ik heb alleen 32 bits genomen omdat het minder ruimte in beslag neemt en het sneller zal zijn om met systeemimages te werken.

Stap 1 – installatie

Het installeren van Win 10 IoT Enterprise verschilt niet van het installeren van Win 10 Enterprise, dus ik zal niet het hele installatieproces beschrijven, ik zal alleen over enkele nuances praten.

Voor het geval dat, laat me u eraan herinneren: installeer het systeem niet bovenop het geïnstalleerde systeem. Wanneer het installatieprogramma vraagt ​​naar de installatielocatie van het systeem, verwijdert u alle partities op de toekomstige systeemschijf en geeft u een niet-gepartitioneerde schijf op.

Wij installeren het systeem zonder internetverbinding zodat het systeem niets onnodigs ophaalt.

Omdat Wij maken back-upimages van het systeem en hiervoor verzegelen we het in auditmodus, vervolgens kunt u wat tijd besparen door het systeem direct na installatie in auditmodus te laden. Om dit te doen, wanneer het systeem u vraagt ​​een regio te selecteren, “Laten we beginnen met de regio. Is dit juist?' Druk gewoon op 'Ctrl+Shift+F3'.

Stap 2 - maak een systeemimage

Omdat we zullen het systeem bespotten en verschillende nieuwe instellingen proberen, het is mogelijk dat er iets misgaat en we zullen het systeem in de oorspronkelijke staat moeten terugbrengen. En om snel terug te keren naar de oorspronkelijke staat, moet u een systeemimage maken. Het enige dat ik zal doen is de “gentleman’s kit” kopiëren: het script en het antwoordbestand. Al mijn bestanden bevinden zich in de map “Sysprep”, die ik naar de hoofdmap van de systeemschijf kopieer. En uiteraard deel ik deze “gentleman’s set” met jullie.

Sysprep.bat – om het systeem af te dichten.

@echo off
chcp 1251>nul

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

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

set AdminName=Admin
net user %AdminName%>nul 2>nul
if %errorLevel% neq 0 (call :AddAdmin "%AdminName%")
if %errorLevel% neq 0 (call :ShowMessage "‡‡‡Ошибка создания новой учетной записи администратора "%AdminName%"‡‡Нажмите любую клавишу для завершения работы скрипта"&pause>nul&exit)

pushd "%~dp0"

cls
call :ShowMessage ‡‡‡‡‡‡‡‡‡‡
echo  1 - Запечатать систему в режиме аудита
echo  2 - Запечатать систему в режиме приветствия
:Select
set /p Choice="Введите номер пункта меню: "
if "%Choice%"=="1" (goto Audit)
if "%Choice%"=="2" (goto OOBE)
echo.&echo Выбрано недопустимое значение.&goto Select

exit

:Audit
    call :ShowMessage "‡‡‡‡‡Запечатывание системы в режиме аудита"
    reg add HKLMSoftwareMicrosoftWindowsCurrentVersionRun /v KillSysprep /t REG_SZ /d "taskkill /im sysprep.exe" /f
    %SYSTEMROOT%System32Sysprepsysprep.exe /audit /generalize /shutdown /quiet
goto :eof

:OOBE
    call :ShowMessage "‡‡‡‡‡Запечатывание системы в режиме приветствия"
    reg delete HKLMSoftwareMicrosoftWindowsCurrentVersionRun /v KillSysprep /f
    powershell -command "(Get-Content -path 'Unattend.xml' -Raw).Trim() -replace 'Architecture=""".+?"""','Architecture="""%PROCESSOR_ARCHITECTURE%"""' | Set-Content -path 'Unattend.xml'"
    %SYSTEMROOT%System32Sysprepsysprep.exe /oobe /generalize /shutdown /quiet /unattend:Unattend.xml
goto :eof

:AddAdmin
    setlocal
    set UserName=%~1
    if not defined UserName (echo Не указано имя пользователя&endlocal&exit /b 1)

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

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

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

:GetGroupName
    if "%~1"=="" (echo Не указан SID группы&goto :eof)
    set %2=
    for /f "tokens=2 delims= " %%i in ('whoami /groups /fo table^|find "%~1"') do set %2=%%i
    if not defined %2 (echo Ошибка определения имени группы по SID'у "%~1")
goto :eof

:ShowMessage
    setlocal enabledelayedexpansion
    set String=%~1
    if not defined String (echo.&setlocal disabledelayedexpansion&goto :eof)
    set /a ConCols=120 & set /a Num=1
    set "String[!Num!].str=%String:‡=" & set /a Num+=1 & set "String[!Num!].str=%"
    for /l %%a in (1,1,%Num%) do (
        for /l %%b in (0,1,%ConCols%) do if "!String[%%a].str:~%%b!" == "" (set "String[%%a].str= !String[%%a].str! "&set /a String[%%a].len-=1) else (set /a String[%%a].len+=0||set /a String[%%a].len=0)
        if not defined String[%%a].str (set String[%%a].str= )
        if not !String[%%a].len! equ 0 (call set String[%%a].str=%%String[%%a].str:~,!String[%%a].len!%%)
        if "!String[%%a].str: =!"=="" (echo.) else (echo !String[%%a].str!))
    setlocal disabledelayedexpansion
goto :eof

Wanneer het script wordt gestart, controleert het de aanwezigheid van het “Admin” -account en maakt het er een aan als het ontbreekt. Het account wordt toegevoegd aan de groep Administrators.

Unattend.xml – responsbestand voor sysprep.

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="specialize">
        <component name="Microsoft-Windows-Deployment" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <RunSynchronous>
                <RunSynchronousCommand wcm:action="add">
                    <Path>reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f</Path>
                    <Order>1</Order>
                    <Description>Dont show key page</Description>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Path>reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f</Path>
                    <Order>2</Order>
                    <Description>Dont make account</Description>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Path>cmd.exe /c rd %systemdrive%Sysprep /s /q</Path>
                    <Order>3</Order>
                    <Description>Del Folder</Description>
                </RunSynchronousCommand>
            </RunSynchronous>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <AutoLogon>
                <Enabled>true</Enabled>
                <Username>Admin</Username>
            </AutoLogon>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>en-US; ru-RU</InputLocale>
            <SystemLocale>ru-RU</SystemLocale>
            <UILanguage>ru-RU</UILanguage>
            <UILanguageFallback></UILanguageFallback>
            <UserLocale>ru-RU</UserLocale>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <HideLocalAccountScreen>true</HideLocalAccountScreen>
                <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
                <HideOnlineAccountScreens>true</HideOnlineAccountScreens>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <ProtectYourPC>1</ProtectYourPC>
            </OOBE>
        </component>
    </settings>
</unattend>

Bij het verzegelen in de auditmodus voegt het script een opdracht aan het register toe om het proces “sysprep.exe” te beëindigen, zodat het sysprep-venster niet elke keer handmatig wordt gesloten. Wanneer het script in de hallo-modus is verzegeld, verwijdert het de opdracht om het venster te sluiten uit het register en verandert het zelf de architectuurwaarde in het antwoordbestand naar de huidige. Het antwoordbestand bevat parameters voor het opstarten van het systeem zonder gebruikersinteractie en een opdracht voor het verwijderen van de map “Sysprep” in de hoofdmap van het systeemstation.

Nu zal ik het systeem in auditmodus verzegelen met behulp van “Sysprep.bat” en een afbeelding van het systeem vastleggen. Ik zal een image maken van het systeem met behulp van DISM en alleen het systeemvolume in beeld brengen. Als u alleen het systeemvolume wilt kopiëren, en niet de hele schijf, vergeet dan niet om de inhoud van de map "WindowsSystem32Recovery" naar het eerste volume in de map "RecoveryWindowsRE" te kopiëren nadat u het systeem hebt geïmplementeerd. Dit moet worden gedaan voordat het besturingssysteem wordt geladen. na het laden van het besturingssysteem zal de map “WindowsSystem32Recovery” al leeg zijn.

Stap 3 – Russificatie van het systeem

Het taalpakket kan zonder internetverbinding worden geïnstalleerd als u dit pakket heeft. Als dit niet het geval is, downloadt het systeem het zelf van internet wanneer u de taal in de instellingen toevoegt. U hoeft alleen niet het taalpakket van eerdere versies van het besturingssysteem te gebruiken. Voor Windows 10 1809 moet er een taalpakket specifiek voor Windows 10 1809 zijn.

Microsoft volgt zijn plan om de instellingen geleidelijk over te zetten van het klassieke menu naar het nieuwe, waardoor je in het klassieke configuratiescherm geen instellingen meer vindt voor het wijzigen van de taal en het installeren van een taalpakket. Deze instellingen bevinden zich nu alleen in de systeemparameters.

In de auditmodus kunt u een probleem tegenkomen bij het openen van de systeeminstellingen vanuit het menu Start; om de systeeminstellingen te openen, voert u de opdracht uit - "ms-settings:", let op de dubbele punt aan het einde van de opdracht, zonder deze zal de opdracht werkt niet. Nadat u de systeemparameters eenmaal met dit commando hebt geopend, kunt u deze openen via het grafische menu.

Maar in de systeeminstellingen kunt u een taalpakket installeren als het systeem met internet is verbonden. Er is geen optie om ervoor te kiezen om een ​​taalpakket vanuit een lokaal bestand te installeren.

Ik zal het proces van het lokaliseren van het systeem niet beschrijven, omdat... dit zal het artikel aanzienlijk ingewikkelder maken, vooral omdat het lokalisatieproces gedetailleerd is hier beschreven. Maar ik zou uw aandacht willen vestigen op de eigenaardigheid van het wijzigen van de systeemtaal na het installeren van een taalpakket met behulp van de console. Deze functie wordt beschreven in dezelfde wiki waarnaar ik eerder een link heb gegeven, in de subsectie "Een taal toevoegen aan de lijst met talen".

Ik installeer het taalpakket zonder internetverbinding.

Zorg ervoor dat u na volledige lokalisatie van het systeem een ​​image van het systeem maakt.

Stap 4 - Installeer de benodigde applicaties

Omdat Omdat LTSB- en LTSC-systemen geen applicatiewinkel hebben, veroorzaakt het installeren van applicaties uit de Microsoft Store enkele problemen, namelijk het downloaden van de applicatie. Om applicaties te downloaden heeft het bedrijf Adguard een zeer handige service gemaakt: "Adguard-winkel", waarmee u tijdelijke downloadlinks voor applicaties en hun componenten kunt krijgen.

Om de applicatie te installeren heeft u bestanden nodig met de extensies “Appx” en “AppxBundle”. Voordat u de applicatie zelf installeert, moet u de componenten ervan installeren. In de regel zijn componenten uit een applicatie intuïtief te onderscheiden aan de hand van de bestandsnaam.

Om het artikel niet te lang te maken, zal ik het proces van het installeren van applicaties niet in detail beschrijven, vooral omdat er informatie is over de installatie gedetailleerde instructie. Maar ik zal nog een manier toevoegen om applicaties in uw huidige account te installeren. Met behulp van het programma kunnen applicaties worden geïnstalleerd "App-installatieprogramma", maar om applicaties te installeren heb je een internetverbinding nodig, maar applicaties kunnen worden geïnstalleerd met een dubbelklik en je hebt de componenten niet nodig; alle benodigde componenten worden gedownload en geïnstalleerd "App-installatieprogramma".

En een kleine herinnering: wanneer u de applicatie op een lopende account installeert, kunt u het systeem niet verzegelen. Hoe u applicaties installeert zodat u het systeem kunt afdichten, zie bovenstaande instructies. En om de werking van de multikiosk te controleren zijn bestaande applicaties ruim voldoende.

Stap 5 – het aanmaken van een configuratiebestand voor de multikiosk

Nu komen we bij het meest interessante deel: het instellen van de kioskmodus. Laten we eens kijken instructies volgens de instellingen die we zien. Allereerst moeten we een XML-configuratiebestand maken, waarvan u hier een volledig voorbeeld kunt vinden. kijk hier.

Laten we beginnen met het instellen van de tegelindeling. De eenvoudigste manier om een ​​configuratie voor het aanpassen van XML-tegels te maken is hun huidige staat exporteren.

Laten we eerst tegels toevoegen van de applicaties die we nodig hebben aan het Start-menu. Roep de zoekopdracht “Win+s” op, zoek de gewenste applicatie, klik er met de rechtermuisknop op en selecteer “Pin to Start Screen”.

Ik heb de volgende apps vastgezet:

  • notitieboekje
  • Calculator
  • internet Explorer
  • Schilder
  • WordPad
  • Parameters
  • Езопасность Windows

De laatste twee aanmeldingen zijn vastgezet omdat... Er zijn simpelweg geen andere universele toepassingen in het standaard LTSC-pakket. Houd er rekening mee dat bureaubladtegels verwijzen naar snelkoppelingen. Door de tegels nu rechtstreeks in het Start-menu te verplaatsen, zal ik de vastgezette tegels in twee groepen verdelen. Om een ​​nieuwe groep tegels te maken, sleept u een tegel aanzienlijk hoger of lager dan andere tegels, waardoor een intuïtieve scheidingslijn wordt gemarkeerd. U kunt de groepen naar eigen goeddunken een naam geven; plaats hiervoor de muiscursor boven de groep en wanneer het opschrift "Name the group" verschijnt, klikt u op de linkermuisknop. Ik zal de eerste groep "Instellingen" noemen, deze zal de tegels "Instellingen" en "Windows-beveiliging" bevatten. Ik zal de tweede groep "Office-applicaties" noemen, die alle andere tegels zal bevatten. Overigens kun je hele groepen tegels verplaatsen door ze te slepen met de twee strepen die zich rechtsboven naast de groepsnaam bevinden.

Omdat Op de tegel “Windows Security” past de naam niet helemaal, ik zal de grootte wijzigen in “Wide”. Om de grootte van een tegel te wijzigen, klikt u met de rechtermuisknop op de tegel en selecteert u “Formaat wijzigen”.

Na de configuratie exporteren we de huidige status en voeren we de opdracht uit in de PowerShell-omgeving – ​​“Export-StartLayout – path C:SysprepStartLayout.xml”.

Vervolgens is de eenvoudigste manier om het instellingenbestand niet zelf aan te maken, maar neem hier een voorbeeldbestand instellingen – klik op de knop “Kopiëren”, plak de inhoud in Kladblok en sla op als “MultiAppKiosk.xml”. Nu veranderen we de instellingen naar onze eigen instellingen. Om de instellingen van gekoppelde tegels te wijzigen, kopieert u het volledige blok “StartLayoutCollection” van “StartLayout.xml” naar “MultiAppKiosk.xml”. Om applicaties aan de toegestane applicaties toe te voegen, moet u universele applicatie-ID's invoegen in de sectie "AllowedApps" en in hetzelfde blok het volledige pad toevoegen naar de uitvoerbare bestanden van klassieke applicaties, dat is gespecificeerd in de eigenschappen van de snelkoppelingen waarnaar de applicaties verwijzen. tegels verwijzen. Om snel naar een snelkoppeling te gaan, klikt u met de rechtermuisknop op een vastgezette tegel en gaat u naar Meer > Ga naar bestandslocatie. Houd er rekening mee dat de parameter 'AppUserModelId' wordt gebruikt om de universele app-ID op te geven, en dat de parameter 'DesktopAppPath' wordt gebruikt om het volledige pad naar de bureaubladtoepassing op te geven. En nog een kleine nuance: als u van plan bent IE op een x64-systeem te gebruiken, moet u in de lijst met toegestane applicaties twee paden opgeven voor het uitvoerbare bestand "Program FilesInternet Exploreriexplore.exe" en "Program Files (x86)Internet Exploreriexplore. exe”.

Ik geef geen toegang tot mappen, dus verwijder ik de sectie 'FileExplorerNamespaceRestrictions'.

Het weergeven van de taakbalk stoort me niet, dus laat ik alles zoals het is in het gedeelte "Taakbalk".

In het voorbeeld zijn twee profielen opgegeven, maar ik heb maar één profiel, dus de sectie met het tweede profiel kan worden verwijderd. Let vóór het verwijderen op het voorbeeld van het automatisch starten van een applicatie met argumenten.

In de sectie “Configs” worden accounts gekoppeld aan profielen; houd er rekening mee dat meerdere accounts aan één profiel kunnen worden gekoppeld. Maar omdat Ik ben slechts in één account geïnteresseerd, daarna verwijder ik alle bindingen behalve de eerste - de "Config" -blokken. In de resterende binding schrijf ik de gebruikersnaam “Gebruiker”.

Ik heb dit bestand met parameters

MultiAppKiosk.xml

<?xml version="1.0" encoding="utf-8" ?>
<AssignedAccessConfiguration 
  xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config"
  xmlns:rs5="http://schemas.microsoft.com/AssignedAccess/201810/config"
  >
  <Profiles>
      <Profile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}">
          <AllAppsList>
              <AllowedApps>
                  <App AppUserModelId="WINDOWS.IMMERSIVECONTROLPANEL_CW5N1H2TXYEWY!MICROSOFT.WINDOWS.IMMERSIVECONTROLPANEL" />
                  <App AppUserModelId="Microsoft.Windows.SecHealthUI_cw5n1h2txyewy!SecHealthUI" />
                  <App DesktopAppPath="%windir%system32notepad.exe" />
                  <App DesktopAppPath="C:Program FilesInternet Exploreriexplore.exe" />
                  <App DesktopAppPath="%windir%system32win32calc.exe" />
                  <App DesktopAppPath="%windir%system32mspaint.exe" />
                  <App DesktopAppPath="%ProgramFiles%Windows NTAccessorieswordpad.exe" />
              </AllowedApps>
          </AllAppsList>
          <StartLayout>
              <![CDATA[<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
                    <LayoutOptions StartTileGroupCellWidth="6" />
                    <DefaultLayoutOverride>
                      <StartLayoutCollection>
                        <defaultlayout:StartLayout GroupCellWidth="6">
                          <start:Group Name="Настройки">
                            <start:Tile Size="2x2" Column="0" Row="0" AppUserModelID="WINDOWS.IMMERSIVECONTROLPANEL_CW5N1H2TXYEWY!MICROSOFT.WINDOWS.IMMERSIVECONTROLPANEL" />
                            <start:Tile Size="4x2" Column="2" Row="0" AppUserModelID="Microsoft.Windows.SecHealthUI_cw5n1h2txyewy!SecHealthUI" />
                          </start:Group>
                          <start:Group Name="Офисные приложения">
                            <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesWordpad.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%MicrosoftWindowsStart MenuProgramsAccessoriesNotepad.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesCalculator.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesPaint.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationLinkPath="%APPDATA%MicrosoftWindowsStart MenuProgramsAccessoriesInternet Explorer.lnk" />
                          </start:Group>
                        </defaultlayout:StartLayout>
                      </StartLayoutCollection>
                    </DefaultLayoutOverride>
                  </LayoutModificationTemplate>
              ]]>
          </StartLayout>
          <Taskbar ShowTaskbar="true"/>
      </Profile>
  </Profiles>
  <Configs>
      <Config>
          <Account>User</Account>
          <DefaultProfile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}"/>
      </Config>
  </Configs>
</AssignedAccessConfiguration>

Wanneer u uw XML-configuratiebestanden maakt, vergeet dan niet dat elk profiel een unieke ID moet hebben, en niet alleen binnen één XML-bestand, maar binnen één besturingssysteem. Die. Om verwarring te voorkomen, kunt u idealiter elke keer een nieuwe identifier maken; dit kan in de PowerShell-omgeving worden gedaan met behulp van de opdracht “[guid]::NewGuid()”. En zorg ervoor dat u het bestand opslaat in “UTF-8”-codering; als het bestand is opgeslagen in “ANSI”-codering, krijgt u bij het bouwen van het voorbereidingspakket een foutmelding als het XML-bestand Cyrillisch bevat.

Stap 6 – Multikiosk-instellingen toepassen

Laten we eens kijken naar twee manieren om de instellingen toe te passen die in het configuratiebestand worden beschreven. De eerste is via een inrichtingspakket, dat in ICD moet worden aangemaakt. Voor sommigen zal deze methode misschien bekender zijn. De tweede is het gebruik van de “MDM Bridge WMI Provider”, deze methode leek mij handiger.

Methode # 1

Wie heeft er geen ICD? ADK downloaden en installeren. Het installeren van ADK is heel eenvoudig; de set componenten kan als standaard blijven staan.

Start ICD, klik op de tegel “Geavanceerde voorbereiding”, geef de naam en map van het project op en klik op “Volgende”. Selecteer in het volgende venster “Alle edities van Windows-desktop” en klik op “Volgende”. U kunt het importeren van het voorbereidingspakket overslaan; klik op “Voltooien”.

Vouw het vervolgkeuzemenu “Runtime-instellingen” uit, vouw vervolgens het submenu “AssignedAccess” uit en selecteer “MultiAppAssignedAccessSettings”. Klik bovenaan het middelste gedeelte van het ICD-venster op de knop "Bladeren" en geef de locatie van het XML-bestand met de instellingen aan. Voor het geval dat u het project kunt opslaan door op “Ctrl+s” te drukken. Selecteer linksboven in de ICD “Exporteren” en selecteer “Provisioning Package” in het vervolgkeuzemenu. Selecteer als eigenaar “IT-beheerder”; alle overige vragen kunnen worden overgeslagen door op “Volgende” te klikken en aan het einde op “Build” en “Finish” te klikken.

Vergeet in het geïnstalleerde systeem niet om een ​​gebruiker “Gebruiker” aan te maken; hij kan niet worden toegevoegd aan de groep “Beheerders”, anders werkt de multikiosk niet. Ik heb een gebruiker aangemaakt in Computerbeheer met een wachtwoord dat nooit verloopt.

Nu voeren we het voorbereidingspakket uit op het eerder geïnstalleerde systeem. Na het toepassen van het voorbereidingspakket zullen het Startmenu en het beheerdersmenu veranderen. In de linker startkolom zouden de knoppen moeten verdwijnen: “Documenten”, “Afbeelding”, “Opties”. Als het startmenu niet is gewijzigd, is er iets misgegaan. Een geïnstalleerd pakket kan worden verwijderd door het venster Instellingen > Accounts > Werk- of schoolaccounttoegang > Inrichtingspakket toevoegen of verwijderen te openen.

Als het startmenu is gewijzigd, worden de instellingen toegepast op het systeem, log in als de gebruiker voor wie de multikiosk is geconfigureerd en bekijk het resultaat.

Methode # 2

Instellingen toepassen met "MDM Bridge WMI Provider" hier beschreven. Het gemak van deze methode is de flexibiliteit van het gebruik en de mogelijkheid om veel handmatige handelingen uit te sluiten die nodig zijn om een ​​voorbereidingspakket te maken. Hier kan iedereen voor zichzelf een beslissing nemen die voor hem of haar handig is. Ik heb een paar scripts voor mezelf gemaakt.

MiltiKiosk.bat – startscript

@echo off
chcp 1251>nul

if not exist "%~dp0psexec.exe" call :ShowMessage "‡‡‡‡‡‡‡‡‡‡‡‡‡Для работы скрипта необходим файл psexec.exe‡‡Для завершения работы скрипта нажмите любую клавишу"&pause>nul&exit

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

for /f "tokens=2 delims==" %%i in ('wmic useraccount where "Name='%UserName%'" get SID /value^|find "SID"') do set SID=%%i
reg add HKU%SID%SoftwareSysinternalsPsExec /v EulaAccepted /t REG_DWORD /d 1 /f

for /f %%i in ('dir "%~dp0%~n0*.ps1" /b /o:n') do set PSFilePath=%~dp0%%i
if not defined PSFilePath (echo Не найдено PS файлов с началом названия - "%~n0"&pause&exit)
set PSFilePath=%PSFilePath: =` %
"%~dp0psexec.exe" -i -s powershell -command "Start-Process powershell.exe -ArgumentList '-ExecutionPolicy Unrestricted -Command %PSFilePath%'"

exit

:ShowMessage
    setlocal enabledelayedexpansion
    set String=%~1
    if not defined String (echo.&setlocal disabledelayedexpansion&goto :eof)
    set /a ConCols=120 & set /a Num=1
    set "String[!Num!].str=%String:‡=" & set /a Num+=1 & set "String[!Num!].str=%"
    for /l %%a in (1,1,%Num%) do (
        for /l %%b in (0,1,%ConCols%) do if "!String[%%a].str:~%%b!" == "" (set "String[%%a].str= !String[%%a].str! "&set /a String[%%a].len-=1) else (set /a String[%%a].len+=0||set /a String[%%a].len=0)
        if not defined String[%%a].str (set String[%%a].str= )
        if not !String[%%a].len! equ 0 (call set String[%%a].str=%%String[%%a].str:~,!String[%%a].len!%%)
        if "!String[%%a].str: =!"=="" (echo.) else (echo !String[%%a].str!))
    setlocal disabledelayedexpansion
goto :eof

MiltiKiosk_Ver.12.ps1 – hoofdscript

Function ConvertEncoding ([string]$From, [string]$To) {
    Begin{$encFrom = [System.Text.Encoding]::GetEncoding($From);$encTo = [System.Text.Encoding]::GetEncoding($To)}
    Process{$bytes = $encTo.GetBytes($_);$bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes);$encTo.GetString($bytes) -replace [char]0, ''}
}

Function ShowMessage ($Message='', $Align=0) {
    Try {$Align = [decimal]$Align} Catch {Return 'Для параметра Align может быть указано только число' | ConvertEncoding 'windows-1251' -To 'UTF-16'}
    if ($Message -is [int]) {for ($i=1; $i -le $Message; $i++) {Write-Host}; Return}
    if ([System.Text.Encoding]::Default.WindowsCodePage -eq 1252) {$Message = $Message | ConvertEncoding 'windows-1251' -To 'UTF-16'}
    if ($Message -is [string]) {[array] $Message = $Message}
    foreach ($String in $Message) {
        Try {$String = [int]$String} Catch {}
        if ($String -is [int]) {for ($i=1; $i -le $String; $i++) {Write-Host}; continue}
        if ($Host.UI.RawUI.BufferSize.Width -gt $String.Length) {
            if ($Align -eq 0) {Write-Host $String
            } else {Write-Host ("{0}{1}" -f (' ' * (([Math]::Max(0, $Host.UI.RawUI.BufferSize.Width / $Align) - [Math]::Floor($String.Length / $Align)))), $String)}
        } else {Write-Host $String}
    } 
}

$script:NameSpace="rootcimv2mdmdmmap"
$script:ClassName="MDM_AssignedAccess"
$script:MultiAppKiosk = Get-CimInstance -Namespace $NameSpace -ClassName $ClassName
if (-not $MultiAppKiosk) {ShowMessage -Message (3, 'Ошибка получения объекта настроек', 2, 'Нажмите "Enter" для завершения рабты скрипта') -Align 2; Read-Host; Exit}

Function MainMenu() {
    ShowMessage (13, ' 0 - Выход', ' 1 - Выбрать XML-файл для установки', ' 2 - Показать текущую конфигурацию мультикиоска', ' 3 - Удалить настройки мультикиоска', 1)
    $local:PromptText = 'Выберите действие'
    if ([System.Text.Encoding]::Default.WindowsCodePage -eq 1252) {$PromptText = $PromptText | ConvertEncoding 'windows-1251' -To 'UTF-16'}

    $local:Selections = 1..2
    While ($true) {
        $Select = Read-Host -Prompt $PromptText
        Switch ($Select) {
            0 {exit}
            1 {XMLSelection}
            2 {ShowMessage -Message (1, 'Начало конфигурации') -Align 2; Write-Host $MultiAppKiosk.Configuration; ShowMessage -Message ('Конец конфигурации', 1, 'Для возврата в меню нажмите "Enter"', 1) -Align 2; Read-Host}
            3 {$MultiAppKiosk.Configuration = $Null; Set-CimInstance -CimInstance $MultiAppKiosk; ShowMessage -Message (1, 'Выполнена команда удаления настроек', 1) -Align 2}
            DEFAULT {ShowMessage 'Выбрано недопустимое значение'}
        }
        if ($Selections -contains $Select) {Clear-Host; ShowMessage (15, ' 0 - Выход', ' 1 - Выбрать XML-файл для установки', ' 2 - Показать текущую конфигурацию мультикиоска', ' 3 - Удалить настройки мультикиоска', 1)}
    }
}

Function XMLSelection() {
    Clear-Host

    if (!(Test-Path -Path $PSScriptRoot'XML')) {ShowMessage -Message (13, 'Не найден каталог', $('"'+$PSScriptRoot+'XML"'), 1, 'Нажмите "Enter" для возврвта в предыдущее меню') -Align 2; Read-Host; Return}

    $local:XMLList = @()
    $XMLList += Get-ChildItem -Path $PSScriptRoot'XML' -name -filter '*.xml'
    if ($XMLList.Count -eq  0) {ShowMessage -Message (13, 'Не найдено XML-файлов в каталоге', $('"'+$PSScriptRoot+'XML"'), 1, 'Нажмите "Enter" для возврвта в предыдущее меню') -Align 2; Read-Host; Return}

    [int]$local:Indent = 13 - $XMLList.Count / 2; if ($Indent -lt 1) {$Indent = 1}
    ShowMessage ($Indent, ' 0 - Вернуться в предыдущее меню')
    for ($i=0; $i -le $XMLList.GetUpperBound(0); $i++) {Write-Host $(' '+($i+1)+' - '+$XMLList[$i])}
    Write-Host
    $local:PromptText = 'Выберите файл для установки'
    if ([System.Text.Encoding]::Default.WindowsCodePage -eq 1252) {$PromptText = $PromptText | ConvertEncoding 'windows-1251' -To 'UTF-16'}

    $local:Selections = 1..$XMLList.Count
    $local:BackToPrevMenu = 0
    While ($BackToPrevMenu -eq 0) {
        $Select = Read-Host -Prompt $PromptText
        Switch ($Select) {
            0 {$BackToPrevMenu = 1}
            {$Selections -contains $Select} {ShowMessage $('Дана команда на применение настроек из файла '+$XMLList[$Select-1]);
                $local:Config = (Get-Content -encoding UTF8 -path $($PSScriptRoot+'XML'+$XMLList[$Select-1]) -Raw).Trim()
                $local:GUIDs = [regex]::matches($Config, '{.+?}') | select -ExpandProperty Value | Get-Unique
                foreach ($GUID in $GUIDs) {$Config = $Config -replace $(''+$GUID),$('{'+[guid]::NewGuid()+'}')}
                $Config = $Config -replace '&','&' -replace '<','<' -replace '>','>' -replace "'",''' -replace '"','"'
                $MultiAppKiosk.Configuration = $Config
                Set-CimInstance -CimInstance $MultiAppKiosk
            }
            DEFAULT {ShowMessage ('Выбрано недопустимое значение')} 
        }
    }
}

MainMenu

Als je mijn oplossing wilt gebruiken, sla dan de bovenstaande scripts met hun originele namen op in één map en plaats het bestand “PsExec.exe” in dezelfde map. Maak in dezelfde map een “XML”-map en kopieer de XML-bestanden om de multikiosk daarin te configureren. Ik zal hetzelfde bestand gebruiken als in de eerste methode.

MultiAppKiosk.xml

<?xml version="1.0" encoding="utf-8" ?>
<AssignedAccessConfiguration 
  xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config"
  xmlns:rs5="http://schemas.microsoft.com/AssignedAccess/201810/config"
  >
  <Profiles>
      <Profile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}">
          <AllAppsList>
              <AllowedApps>
                  <App AppUserModelId="WINDOWS.IMMERSIVECONTROLPANEL_CW5N1H2TXYEWY!MICROSOFT.WINDOWS.IMMERSIVECONTROLPANEL" />
                  <App AppUserModelId="Microsoft.Windows.SecHealthUI_cw5n1h2txyewy!SecHealthUI" />
                  <App DesktopAppPath="%windir%system32notepad.exe" />
                  <App DesktopAppPath="C:Program FilesInternet Exploreriexplore.exe" />
                  <App DesktopAppPath="%windir%system32win32calc.exe" />
                  <App DesktopAppPath="%windir%system32mspaint.exe" />
                  <App DesktopAppPath="%ProgramFiles%Windows NTAccessorieswordpad.exe" />
              </AllowedApps>
          </AllAppsList>
          <StartLayout>
              <![CDATA[<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
                    <LayoutOptions StartTileGroupCellWidth="6" />
                    <DefaultLayoutOverride>
                      <StartLayoutCollection>
                        <defaultlayout:StartLayout GroupCellWidth="6">
                          <start:Group Name="Настройки">
                            <start:Tile Size="2x2" Column="0" Row="0" AppUserModelID="WINDOWS.IMMERSIVECONTROLPANEL_CW5N1H2TXYEWY!MICROSOFT.WINDOWS.IMMERSIVECONTROLPANEL" />
                            <start:Tile Size="4x2" Column="2" Row="0" AppUserModelID="Microsoft.Windows.SecHealthUI_cw5n1h2txyewy!SecHealthUI" />
                          </start:Group>
                          <start:Group Name="Офисные приложения">
                            <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesWordpad.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%MicrosoftWindowsStart MenuProgramsAccessoriesNotepad.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesCalculator.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesPaint.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationLinkPath="%APPDATA%MicrosoftWindowsStart MenuProgramsAccessoriesInternet Explorer.lnk" />
                          </start:Group>
                        </defaultlayout:StartLayout>
                      </StartLayoutCollection>
                    </DefaultLayoutOverride>
                  </LayoutModificationTemplate>
              ]]>
          </StartLayout>
          <Taskbar ShowTaskbar="true"/>
      </Profile>
  </Profiles>
  <Configs>
      <Config>
          <Account>User</Account>
          <DefaultProfile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}"/>
      </Config>
  </Configs>
</AssignedAccessConfiguration>

Een beetje over de kenmerken van het script. Het script is ontworpen om XML-bestanden met “UTF8”-codering te gebruiken; als u “ANSI”-codering wilt gebruiken, verwijder dan de parameter “encoding UTF8” uit de optie voor het lezen van bestanden. U moet XML-bestanden in de map “XML” plaatsen zonder tekens te vervangen; het script zelf zal speciale tekens vervangen door de juiste aanduidingen. Om geen verwarring te veroorzaken in de GUID's van het koppelen van gebruikers aan profielen, kunt u eenvoudigweg het gebruikersnummer of de naam tussen accolades aangeven; alle inhoud tussen accolades wordt vervangen door GUID's.

Het gebruik van het script is heel eenvoudig: voer het gewoon uit en selecteer het gewenste item. Om de huidige configuratie naar een nieuwe te wijzigen, is het niet nodig de huidige te verwijderen; deze wordt overschreven. Vergeet niet om gebruikers aan te maken die zijn opgegeven in het configuratiebestand.

Wanneer u de huidige multikiosk-configuratie bekijkt in dezelfde sessie waarin deze is toegepast, worden in plaats van speciale tekens combinaties van vervangende tekens weergegeven. Na het wijzigen van de sessie (het opnieuw starten van het script) worden alle speciale tekens in hun oorspronkelijke vorm weergegeven.

Stap 7 - Het systeem afdichten

De multikiosk werkt, nou ja, dat is alles, zo lijkt het...

Als alles volgens plan verloopt, merk je er niets van.

Vergeet niet dat we het systeem nog moeten overschakelen van de auditmodus naar de welkomstmodus. Welnu, we zijn hier klaar voor, we lanceren "Sysprep.bat", selecteren punt 2, het systeem is verzegeld. We zetten het apparaat aan, het systeem start op, we loggen in op het gebruikersaccount waarvoor de multikiosk is geconfigureerd, maar we kunnen niet inloggen. Na het bericht “Welkom” verschijnt het bericht “Uitloggen”.

In eerste instantie wilde ik alleen de oplossing voor het probleem beschrijven, maar later besloot ik de stappen te beschrijven om het probleem te identificeren en de eenvoudigste oplossing te vinden, omdat... Zeker, veel lezers zullen gekweld worden door vage twijfels: "Wat als het zo is...". Ik denk dat het beschrijven van de verschillende experimenten je een aanzienlijke hoeveelheid tijd zal besparen als je een andere oplossing wilt vinden. Om de informatie zo accuraat mogelijk te maken, en om er nogmaals zeker van te zijn dat er geen fouten zijn, zal ik de experimenten beschrijven in het ‘klaar en opgenomen’ formaat. Die. Ik zal de beschreven experimenten opnieuw doen.

experimenten

Wat hebben we gedaan? Er zijn twee accounts in het systeem:

“Beheerder” – in de groep “Beheerders”.
“Gebruiker” – in de groep “Gebruikers”.
In de auditmodus werkte de multikiosk, maar als hij verzegeld was, werkte hij niet.

Experiment 1

We verwijderen het geïnstalleerde voorbereidingspakket, in de module "Computerbeheer" verwijderen we de gebruiker "Gebruiker" en maken een nieuwe gebruiker aan met de naam "Gebruiker", passen het voorbereidingspakket toe, gaan naar het account "Gebruiker" - dat doet het werkt niet. We gaan onder de naam "Beheerder", verwijderen de gebruiker "Gebruiker" uit de groep "Gebruikers", voegen deze toe aan de groep "Beheerders", gaan onder de naam "Gebruiker" - het werkt niet. We loggen in onder de naam “Admin”, verwijderen het voorbereidingspakket met de multikiosk, loggen in onder de naam “Gebruiker” - het is ons gelukt om in te loggen, maar de multikiosk-modus werkt natuurlijk niet omdat Het inrichtingspakket is verwijderd.

Experiment 2

We uploaden de systeemimage - Russified in auditmodus.

Het besturingssysteem is geladen, druk op "Win+r", omdat Ons sysprep-venster is automatisch gesloten, voer de opdracht “sysprep” uit en voer “sysprep” uit in het venster dat wordt geopend. Sysprep-instellingen in het venster: “Ga naar het welkomstvenster van het systeem (OOBE)”, “Bezig met voorbereiden voor gebruik”, “Opnieuw opstarten”. Klik op "OK" en wacht op de OS-begroeting. We beantwoorden de vragen wanneer het systeem voor de eerste keer opstart: “Doorgaan in geselecteerde taal?” - "Russisch"; regio – Rusland; toetsenbordindeling – Russisch; voeg een tweede toetsenbordindeling toe - overslaan; “Laten we u verbinden met het netwerk” – “Voor nu overslaan”; verbinding maken met internet - nee; licentieovereenkomst - accepteren; “Wie gaat deze computer gebruiken” – “Test”; een wachtwoord aanmaken - laat het veld leeg; Comfortabele bediening op verschillende apparaten – nee; Privacy-instellingen – accepteren. Het besturingssysteem is geladen, in de module “Computerbeheer” maken we een gebruiker aan met de naam “Gebruiker”, voegen we het voorbereidingspakket toe. Het resultaat is dat het niet werkt.

Experiment 3

We uploaden de systeemimage - Russified in auditmodus.

Het besturingssysteem is geladen, sluit het systeem aan op internet, voer de opdracht "gpedit.msc" uit en schakel in de sectie "Windows Update" de optie "Aanbevolen updates inschakelen via automatische updates" in, start opnieuw op voor het geval dat. Klik in het updatecentrum op “Controleren op updates” en start opnieuw op totdat alle updates zijn geïnstalleerd. Koppel het systeem los van internet. We starten “sysprep” in de grafische modus en herhalen alle stappen die in de vorige stap zijn beschreven, van het uitvoeren van het hulpprogramma “sysprep” tot het toevoegen van het voorbereidingspakket. Het resultaat is dat het niet werkt.

Experiment 4

We uploaden de systeemimage - Engels in auditmodus.

We starten “sysprep” in grafische modus, verzegelen het besturingssysteem met dezelfde parameters als tijdens experiment 2. Wanneer het systeem voor het eerst opstart, selecteren we dezelfde parameters als in experiment 2, met uitzondering van regionale en taalparameters omdat Er bestaat geen Russische taal. Maak op dezelfde manier een gebruiker “Gebruiker” en voeg een inrichtingspakket toe. Het resultaat is dat het werkt. Die. Het probleem heeft te maken met lokalisatie.

Experiment 5

We uploaden de systeemimage - Russified in auditmodus.

Maak in de module "Computerbeheer" een gebruiker "Gebruiker" aan, voeg een voorbereidingspakket toe, ga naar het account "Gebruiker", de multikiosk werkt.

Meld u af bij uw account en log in onder het “Admin”-account. We starten PowerShell met beheerdersrechten, voeren het commando “Dism /online /Get-Intl” uit en zien “Standaard gebruikersinterfacetaal: en-US”.

We starten vanaf de flashdrive op in WinPE, het geïmplementeerde besturingssysteem staat op mijn E-schijf. We voeren het commando "Dism /image:E: /Set-UILang:ru-ru" uit. We kijken naar het resultaat, voeren “Dism /image:E: /Get-Intl” uit en zien “Standaard systeem UI-taal: ru-RU”.

We starten het systeem op, loggen in op het "Gebruikers" -account, de multikiosk werkt niet.

Om de oorzaak-en-gevolgrelatie van het probleem duidelijk vast te stellen, proberen we opnieuw de multi-kiosk werkend en niet-werkend te maken.

We starten vanaf de flashdrive op in WinPE, het geïmplementeerde besturingssysteem staat op mijn E-schijf. We voeren het commando "Dism /image:E: /Set-UILang:en-us" uit. We kijken naar het resultaat, voeren “Dism /image:E: /Get-Intl” uit en zien “Standaard systeem UI-taal: en-US”.

We starten het systeem op, loggen in op het "Gebruikers" -account, de multikiosk werkt.

We starten vanaf de flashdrive op in WinPE, het geïmplementeerde besturingssysteem staat op mijn E-schijf. We voeren het commando "Dism /image:E: /Set-UILang:ru-ru" uit. We kijken naar het resultaat, voeren “Dism /image:E: /Get-Intl” uit en zien “Standaard systeem UI-taal: ru-RU”.

We starten het systeem op, loggen in op het "Gebruikers" -account, de multikiosk werkt niet.

Die. je kunt een duidelijke afhankelijkheid zien van de prestaties van de kiosk van de standaard gebruikersinterfacetaal. Misschien zijn er nog andere factoren die de prestaties van de multikiosk beïnvloeden?

Experiment 6

Voor de zuiverheid van het experiment vullen we het systeem opnieuw aan. We uploaden de systeemimage - Russified in auditmodus.

We starten “sysprep” in grafische modus, verzegelen het besturingssysteem met dezelfde parameters als tijdens experiment 2. We wachten tot het besturingssysteem ons begroet en de vragen beantwoordt: “Doorgaan in de geselecteerde taal?” - "Engels Verenigde Staten)"; regio – Rusland; Toetsenbordindeling – Russisch. Verder werden alle parameters geselecteerd zoals in experiment 2.

Laten we eens kijken naar de standaardtaalinstellingen van de gebruikersinterface. We voeren het commando “Dism /online /Get-Intl” uit en zien “Standaard systeem UI-taal: en-US”. Maak in de module "Computerbeheer" een gebruiker "Gebruiker" aan, voeg een voorbereidingspakket toe, ga naar het account "Gebruiker", de multikiosk werkt.

We proberen de kiosk te doorbreken door de standaardtaal van de gebruikersinterface te wijzigen. We gaan naar de "Test" -gebruiker, die is aangemaakt toen het systeem voor het eerst opstartte, en schakelen automatische aanmelding ervoor in, zodat het systeem niet meteen opstart in het "Gebruikers" -account. Voer “netplwiz” uit, selecteer de “Test”-gebruiker, schakel het selectievakje “Gebruikersnaam en wachtwoord vereisen” uit en pas de parameters toe.

Start op vanaf een flashstation in WinPE. Voer het commando “Dism /image:E: /Set-UILang:ru-ru” uit. We kijken naar het resultaat, voeren “Dism /image:E: /Get-Intl” uit en zien “Standaard systeem UI-taal: ru-RU”.

We starten het systeem op, proberen in te loggen op het "Gebruikers" -account, de multikiosk werkt. Die. het kan niet gebroken worden. Is het mogelijk om het op deze manier te laten werken?

Experiment 7

We uploaden de systeemimage - Russified in auditmodus.

We starten “Sysprep.bat”, selecteren punt 2. We starten het systeem op, creëren de gebruiker “Gebruiker” in de module “Computerbeheer”, voegen het voorbereidingspakket toe, gaan naar het “Gebruiker” -account, de multi- kiosk werkt niet.

Start op vanaf een flashstation in WinPE. Voer het commando “Dism /image:E: /Set-UILang:en-us” uit. We kijken naar het resultaat, voeren “Dism /image:E: /Get-Intl” uit en zien “Standaard systeem UI-taal: en-US”.

We starten het systeem op, proberen in te loggen op het "Gebruikers" -account, de multikiosk werkt niet.

Het blijkt dat door het wijzigen van de standaardtaalinstelling van de gebruikersinterface, u de prestaties van de multikiosk alleen kunt beïnvloeden wanneer het systeem zich in de auditmodus bevindt of bij de eerste keer opstarten nadat het systeem is verzegeld. Dit betekent dat u het systeem moet verzegelen met een responsbestand waarin de systeemtaal in het Engels wordt geselecteerd, en vervolgens de systeeminstellingen moet wijzigen zodat de interface Russisch is. Geen erg goede oplossing. Misschien kan het probleem worden opgelost door een taalpakket te installeren of extra taalpakketten te installeren?

Experiment 8

We uploaden de systeemimage - Engels in auditmodus.

We maken verbinding met internet, ga in de systeemparameters naar het gedeelte "Taal", selecteer "Taal toevoegen", selecteer de taal "Russisch", klik op "Volgende", laat de installatieparameters op standaard staan, klik op "Installeren", na installatie Met het taalpakket starten we het systeem opnieuw op, nu op Russified. Ontkoppel het systeem van internet, voer “Sysprep.bat” uit, selecteer punt 2.

Nadat u het systeem hebt geladen, maakt u in de module "Computerbeheer" de gebruiker "Gebruiker" aan, voegt u het voorbereidingspakket toe, gaat u naar het account "Gebruiker", de multikiosk werkt niet.

Experiment 9

Laten we proberen het systeem te Russificeren vóór de installatie, in de offline modus. Tegelijkertijd zal er een kort educatief programma zijn over de lokalisatie van de distributie.

Ik neem een ​​flashdrive met een schone originele distributie - X21-96381. Het zal schijf "E" zijn. Om afbeeldingen te mounten, maak ik mappen: “c:MountInstall”, “c:MountWinre”, “c:MountBoot”. Ik neem een ​​set lokalisatiepakketten - X21-87814. En naar de map "c:Mount" kopieer ik de pakketten daaruit: "Microsoft-Windows-Client-Language-Pack_x86_ru-ru.cab", "lp.cab", "WinPE-Setup_ru-ru.cab". Ik start de console met beheerdersrechten. Ik denk dat verdere bevelen zonder commentaar duidelijk zullen zijn.

Lokalisatieopdrachten

cd c:mount
dism /Mount-Wim /WimFile:e:sourcesinstall.wim /index:1 /MountDir:Installcode
dism /Image:Install /Add-Package /PackagePath:Microsoft-Windows-Client-Language-Pack_x86_ru-ru.cabcode
dism /Image:Installcode /Set-AllIntl:ru-ru
dism /Image:Install /Set-TimeZone:"Russian Standard Time"code

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

dism /Image:Install /Gen-LangINI /distribution:E: /Set-AllIntl:ru-RUcode
dism /image:Install /Set-SetupUILang:RU-ru /distribution:E:code
dism /Unmount-Image /MountDir:Install /Commitcode

dism /mount-wim /wimfile:e:sourcesboot.wim /index:1 /mountdir:Bootcode
dism /Image:Boot /Add-Package /PackagePath:lp.cabcode
dism /Image:Bootcode /Set-AllIntl:ru-ru
copy e:sourceslang.ini Bootsourceslang.inicode
dism /Unmount-Image /MountDir:Boot /Commitcode

dism /mount-wim /wimfile:e:sourcesboot.wim /index:2 /mountdir:Bootcode
dism /Image:Boot /Add-Package /PackagePath:lp.cabcode
dism /Image:Boot /Add-Package /PackagePath:WinPE-Setup_ru-ru.cabcode
dism /Image:Bootcode /Set-AllIntl:ru-ru
copy e:sourceslang.ini Bootsourceslang.ini /ycode
dism /Unmount-Image /MountDir:Boot /Commit

We starten op vanaf de flashdrive, selecteren de Russische taal en installeren het systeem op een lege schijf. Wanneer het systeem u vraagt ​​een regio te selecteren, drukt u op “Ctrl+Shift+F3”. Maak in de module “Computerbeheer” een gebruiker “Gebruiker” aan, voeg een voorbereidingspakket toe, ga naar het account “Gebruiker”, de multikiosk werkt niet.

Start op vanaf een flashstation in WinPE. Voer het commando “Dism /image:E: /Set-UILang:en-us” uit.

We starten het systeem op, proberen in te loggen op het "Gebruikers" -account, de multikiosk werkt.

Blijkbaar ligt het probleem niet in de methoden voor het toevoegen van een pakket. Laten we proberen extra pakketten toe te voegen.

Experiment 10

We nemen de flashdrive die we in de vorige stap hebben voorbereid.

We nemen het “Feat on Demand” -pakket – X21-87815. Ik kopieer de pakketten ervan naar de map “c:Mount”: «Microsoft-Windows-LanguageFeatures-Basic-ru-ru-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-OCR-ru-ru-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-Handwriting-ru-ru-Package~31bf3856ad364e35~x86~ ~.cab», «Microsoft-Windows-LanguageFeatures-TextToSpeech-ru-ru-Package~31bf3856ad364e35~x86~~.cab».

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

Start de console met beheerdersrechten en voer de opdrachten uit:

Команды

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

We starten op vanaf de flashdrive, selecteren de Russische taal en installeren het systeem op een lege schijf. Wanneer het systeem u vraagt ​​een regio te selecteren, drukt u op “Ctrl+Shift+F3”. Maak in de module “Computerbeheer” de gebruiker “Gebruiker” aan, voeg het inrichtingspakket toe en log in op het “Gebruiker”-account. Ik kreeg een zwart scherm dat lange tijd bleef hangen, dus ik heb het systeem warm opgestart.

We verwijderen het voorbereidingspakket, loggen in als “Gebruiker”, herstarten het systeem, voegen het voorbereidingspakket toe, de multikiosk werkt niet.

Start op vanaf een flashstation in WinPE. Voer het commando “Dism /image:E: /Set-UILang:en-us” uit.

We starten het systeem op, proberen in te loggen op het "Gebruikers" -account, de multikiosk werkt.

tijdelijke oplossing

Normale helden. Ze nemen altijd een omweg!

Verschillende methoden voor het installeren van lokalisatiepakketten hebben het probleem niet opgelost, wat betekent dat u de taal "en-us" moet installeren bij de eerste keer opstarten na het verzegelen, en de taalinstellingen moet wijzigen na de eerste keer opstarten.

We uploaden de systeemimage - Russified in auditmodus.

Voer in het bestand "Unattend.xml" "en-US" in de parameter in, voer "Sysprep.bat" uit, selecteer punt 2 en kijk wat we hebben gekregen. Het welkomstscherm is in het Engels, de multikiosk werkt. Dit betekent dat u een opdracht aan “Unattend.xml” moet toevoegen om de begroetingstaal te wijzigen. En om dit te doen, moet u de opdracht "control intl.cpl,, /f:" uitvoeren, waarmee het configuratiebestand wordt aangegeven, dat het kopiëren van de huidige parameters naar het welkomstscherm specificeert. De inhoud van het configuratiebestand ziet er als volgt uit.

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

Omdat kopieert de instellingen van de huidige gebruiker, dan moet het commando worden uitgevoerd nadat de gebruiker is ingelogd, wat betekent dat we dit nodig hebben. Er is één kleine “maar”, de uitvoering vindt plaats nadat een gebruiker met beheerdersrechten zich heeft aangemeld. En ik zou geen extra bestand willen maken dat nodig zou zijn om de opdracht succesvol uit te voeren. Het is beter om de hele oplossing in één bestand te implementeren - "Unattend.xml". Om dit te doen, hoeft u alleen maar een opdracht uit te voeren die een configuratiebestand aanmaakt. Ik denk dat ik een configuratiebestand ga maken met de opdracht "echo" in de "cmd"-omgeving, maar het moet aan de punthaken ontsnappen met een circumflex. Die. Om een ​​configuratiebestand te maken, wordt de volgende opdracht verkregen.

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

Maar we moeten deze opdracht in XML plaatsen, die zijn eigen vereisten heeft voor het gebruik van speciale tekens:

Speciaal karakter
Vervangingswaarde

>
&gt;

<
&lt;

&
&amp;

'
&apos;

"
&quot;

Als gevolg hiervan kregen we, om een ​​configuratiebestand te maken, de volgende opdracht voor "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;

Vervolgens voeren we de opdracht uit met behulp van het configuratiebestand.

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

Verwijder vervolgens het eerder gemaakte bestand en start het systeem opnieuw op. de wijzigingen worden van kracht na een herstart.

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

Als gevolg hiervan kreeg ik het volgende antwoordbestand voor sysprep.

Unattend.xml

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="specialize">
        <component name="Microsoft-Windows-Deployment" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <RunSynchronous>
                <RunSynchronousCommand wcm:action="add">
                    <Path>reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f</Path>
                    <Order>1</Order>
                    <Description>Dont show key page</Description>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Path>reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f</Path>
                    <Order>2</Order>
                    <Description>Dont make account</Description>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Path>cmd.exe /c rd %systemdrive%Sysprep /s /q</Path>
                    <Order>3</Order>
                    <Description>Del Folder</Description>
                </RunSynchronousCommand>
            </RunSynchronous>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <AutoLogon>
                <Enabled>true</Enabled>
                <Username>Admin</Username>
            </AutoLogon>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>en-US; ru-RU</InputLocale>
            <SystemLocale>ru-RU</SystemLocale>
            <UILanguage>en-US</UILanguage>
            <UILanguageFallback></UILanguageFallback>
            <UserLocale>ru-RU</UserLocale>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <HideLocalAccountScreen>true</HideLocalAccountScreen>
                <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
                <HideOnlineAccountScreens>true</HideOnlineAccountScreens>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <ProtectYourPC>1</ProtectYourPC>
            </OOBE>
            <FirstLogonCommands>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>cmd.exe /c echo ^&lt;gs:GlobalizationServices xmlns:gs=&quot;urn:longhornGlobalizationUnattend&quot;^&gt;^&lt;gs:UserList^&gt;^&lt;gs:User UserID=&quot;Current&quot; CopySettingsToSystemAcct=&quot;true&quot;/^&gt;^&lt;/gs:UserList^&gt;^&lt;/gs:GlobalizationServices^&gt;&gt;&quot;%TMP%Config.xml&quot;</CommandLine>
                    <Description>CreateConfig</Description>
                    <Order>1</Order>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>control intl.cpl,,/f:&quot;%TMP%Config.xml&quot;</CommandLine>
                    <Description>UseConfig</Description>
                    <Order>2</Order>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>cmd.exe /c del &quot;%TMP%Config.xml&quot; /q&amp;shutdown /r /f /t 00</CommandLine>
                    <Description>DelConfig</Description>
                    <Order>3</Order>
                </SynchronousCommand>
            </FirstLogonCommands>
        </component>
    </settings>

Laten we het controleren...

We uploaden de systeemimage - Russified in auditmodus.

We veranderen het Unattend.xml-bestand naar een nieuw bestand, voeren "Sysprep.bat" uit, selecteren punt 2 en kijken wat we krijgen. Wanneer u voor het eerst opstart, is het welkomstscherm in het Engels en wordt het systeem opnieuw opgestart. Het welkomstscherm is in het Russisch, de multikiosk werkt.

Als u vragen heeft over het instellen en licentiëren van Windows 10 IoT Enterprise, neem dan contact op met: [e-mail beveiligd] of naar de website quarta-embedded.ru.
Antwoorden op een aantal vragen vindt u in onze wiki of op onze Youtube kanaal

Auteur van het artikel: Vladimir Borisenkov, technisch expert bij Quarta Technologies.

Bron: www.habr.com