Windows 10 IoT Enterprise 2019 - λειτουργία πολλαπλών περιπτέρων

Εισαγωγή

Windows 10 IoT Enterprise 2019 είναι το όνομα μάρκετινγκ για την επόμενη έκδοση των Windows 10. Η κυκλοφορία αυτής της έκδοσης ανακοινώθηκε τον Σεπτέμβριο του 2018, αντίστοιχα, έχει έκδοση 1809, 18 είναι το έτος, 09 είναι ο μήνας. Πολλά άρθρα έχουν γραφτεί για τη νέα έκδοση των Windows 10 1809, αλλά τα περισσότερα από αυτά είναι αφιερωμένα σε διάφορα "τόξα", "ομορφιές" και διάφορες λειτουργίες που έχουν ζήτηση στο σπίτι.
Αυτό το άρθρο θα συζητήσει μόνο τη λειτουργικότητα που μπορεί να έχει ζήτηση μεταξύ των κατασκευαστών συσκευών σταθερής χρήσης. Δηλαδή, σχετικά με τις νέες δυνατότητες της λειτουργίας "Kiosk". Θα θιγεί επίσης το θέμα της αλλαγής των ονομάτων των σχημάτων υπηρεσιών για τις εκδόσεις των Windows του εταιρικού τμήματος.

Παλιό πρόγραμμα υπηρεσιών με νέο όνομα

Επιτρέψτε μου να ξεκινήσω με μια σύντομη εξήγηση: στο εταιρικό τμήμα των εκδόσεων των Windows υπάρχουν δύο σχήματα υπηρεσιών σύμφωνα με τα οποία τα Windows λαμβάνουν ενημερώσεις. Τα διαγράμματα σέρβις έχουν χαρακτηρισμό γράμματος. Επί του παρόντος, τα υποκαταστήματα υπηρεσιών ονομάζονται LTSC και SAC.

LTSC σημαίνει Κανάλι μακροπρόθεσμης εξυπηρέτησης (με μακροχρόνια συντήρηση). Προηγουμένως, ένα τέτοιο κανάλι ονομαζόταν LTSB - Long Term Servicing Branch. Η Microsoft απλώς άλλαξε το όνομα του καναλιού υπηρεσίας, η ίδια η υπηρεσία παρέμεινε η ίδια.

Η Microsoft άλλαξε επίσης το όνομα του κλάδου υπηρεσιών CBB - Current Branch for Business, τώρα αυτός ο κλάδος υπηρεσίας ονομάζεται SAC - Εξαμηνιαίο κανάλι. Και πάλι, μόνο το όνομα έχει αλλάξει.

Πρέπει όμως να αναφερθεί ότι τα υποκαταστήματα εξυπηρέτησης LTSC και SAC χρησιμοποιούν διαφορετικές διανομές Windows.

Λίγα λόγια για τη νέα λειτουργία kiosk στο SAC

Όπως είπα ήδη, η LTSC και η SAC έχουν διαφορετικές διανομές. Το LTSC δεν διαθέτει τυπικές καθολικές εφαρμογές ή κατάστημα εφαρμογών, αλλά το SAC έχει. Αντίστοιχα, η LTSC δεν διαθέτει πρόγραμμα περιήγησης Edge, αλλά η SAC έχει. Εάν επιλέξετε το πρόγραμμα περιήγησης Edge κατά τη ρύθμιση ενός κιόσκι, τότε είναι πλέον διαθέσιμες δύο λειτουργίες:

  1. Ως ψηφιακό σήμα ή διαδραστική οθόνη
  2. Όπως ένα δημόσιο πρόγραμμα περιήγησης

Δεν θα επιμείνω στη ρύθμιση αυτών των λειτουργιών, γιατί... Η εγκατάσταση είναι πολύ απλή και γίνεται σε γραφικό περιβάλλον. Απλώς δημιουργήστε έναν χρήστη που δεν είναι μέλος της ομάδας Administrators, ενεργοποιήστε τη λειτουργία kiosk για αυτόν χρησιμοποιώντας το EDGE και δείτε πώς λειτουργούν αυτές οι λειτουργίες.

Περίπτερο με πολλές εφαρμογές

Μερικοί άνθρωποι πιστεύουν ότι η άδεια χρήσης Windows 10 IoT Enterprise συνεπάγεται τη λειτουργία μιας μόνο εφαρμογής στη συσκευή, στην πραγματικότητα αυτό δεν ισχύει. Η συσκευή πρέπει να έχει σχεδιαστεί για να εκτελεί μια μεμονωμένη επαγγελματική εργασία και ο χρήστης δεν πρέπει να έχει πρόσβαση σε επιφάνεια εργασίας. Τώρα η ίδια η Microsoft έδωσε το εργαλείο για τη χρήση πολλών εφαρμογών. Αυτή η λειτουργία ονομάζεται "περιπτέρο πολλαπλών εφαρμογών"· στο εξής, για συντομία, θα την ονομάζω "multikiosk". Σε αυτό το άρθρο θα εξετάσουμε τη ρύθμιση αυτής της λειτουργίας χρησιμοποιώντας το πακέτο λογισμικού και ορισμένες από τις δυνατότητες αυτής της λειτουργίας.

Λίγα λόγια για τη λειτουργία Multikiosk

Όταν συνδέεστε σε έναν λογαριασμό χρήστη για τον οποίο έχει διαμορφωθεί η λειτουργία πολλαπλών περιπτέρων, το σύστημα θα λειτουργεί σε λειτουργία tablet. Το μενού Έναρξη θα επεκταθεί σε πλήρη οθόνη, εμφανίζοντας πλακίδια εφαρμογής.

Λίστα βασικών ρυθμίσεων και δυνατοτήτων λειτουργίας:

  1. Ρύθμιση για πολλούς χρήστες ή ομάδες
  2. Σε κάθε χρήστη ή ομάδα μπορεί να εκχωρηθούν μεμονωμένες ρυθμίσεις
  3. Δυνατότητα χρήσης καθολικών και κλασικών εφαρμογών
  4. Η δυνατότητα αυτόματης εκκίνησης μιας από τις εφαρμογές κατά τη σύνδεση του χρήστη
  5. Εφαρμογές στη λίστα επιτρεπόμενων
  6. Πρόσβαση σε φακέλους χρησιμοποιώντας μια λευκή λίστα

Αξίζει να προσέξετε το σημείο 5. Από προεπιλογή, μόνο οι εφαρμογές που είναι απαραίτητες για τη λειτουργία του συστήματος θα επιτρέπεται να λειτουργούν· άλλες εφαρμογές πρέπει να προστεθούν στη λίστα με τις επιτρεπόμενες. Εκείνοι. Τώρα δεν χρειάζεται να διαμορφώσετε το AppLocker ξεχωριστά. Παρεμπιπτόντως, για την αποφυγή διενέξεων με τις ρυθμίσεις του AppLocker, στη λειτουργία πολλαπλών περιπτέρων, δεν θα ισχύουν όλοι οι διαμορφωμένοι κανόνες του AppLocker.

Το σημείο 6 υποδεικνύει μια καλή επιλογή, αλλά αυτή τη στιγμή είναι δυνατό να δοθεί μόνο άδεια εγγραφής στο φάκελο "Λήψεις". Η λειτουργία σάς επιτρέπει να χρησιμοποιείτε καθολικές και κλασικές εφαρμογές. Όλες οι ρυθμίσεις λειτουργίας καθορίζονται σε ένα αρχείο XML, στο οποίο μπορείτε επίσης να καθορίσετε ρυθμίσεις για ένα κιόσκι εφαρμογής.

Τώρα ας προσπαθήσουμε να τα ρυθμίσουμε όλα...

Τι χρειαζόμαστε...

  1. Πρώτα απ 'όλα, χρειαζόμαστε το ίδιο το σύστημα, το οποίο υποστηρίζει τη λειτουργία multikiosk. Εδώ μπορείτε να κάνετε λήψη έκδοση επίδειξης
  2. Οδηγίες για το στήσιμο πολυκιόσκ
  3. Οποιοσδήποτε επεξεργαστής XML
  4. Για να εφαρμόσετε ρυθμίσεις multikiosk:
    1. Για τη μέθοδο Νο. 1 - ICD, που αποτελεί μέρος του ADK. Το ADK είναι δυνατό κατεβάστε εδώ
    2. Για τη μέθοδο Νο. 2 - το βοηθητικό πρόγραμμα PsExec. Το βοηθητικό πρόγραμμα μπορεί να είναι κατεβάστε εδώ

Είπε - "Πάμε!"

Θα πραγματοποιήσω όλα τα πειράματα στην εμπορική έκδοση των Windows 10 IoT Enterprise 1809 LTSC x32, όχι σε έκδοση επίδειξης. Το σύστημα δεν θα ενεργοποιηθεί γιατί Η έλλειψη ενεργοποίησης δεν επηρεάζει τη λειτουργικότητα του συστήματος. Πήρα 32 bit μόνο επειδή καταλαμβάνει λιγότερο χώρο και θα είναι πιο γρήγορο να δουλέψω με εικόνες συστήματος.

Βήμα 1 – εγκατάσταση

Η εγκατάσταση του Win 10 IoT Enterprise δεν διαφέρει από την εγκατάσταση του Win 10 Enterprise, επομένως δεν θα περιγράψω ολόκληρη τη διαδικασία εγκατάστασης, θα μιλήσω μόνο για ορισμένες από τις αποχρώσεις.

Για κάθε περίπτωση, να σας υπενθυμίσω, μην εγκαταστήσετε το σύστημα πάνω από το εγκατεστημένο. Όταν το πρόγραμμα εγκατάστασης ρωτά για τη θέση εγκατάστασης του συστήματος, διαγράψτε όλα τα διαμερίσματα στον μελλοντικό δίσκο συστήματος και καθορίστε έναν δίσκο χωρίς διαμερίσματα.

Εγκαθιστούμε το σύστημα χωρίς σύνδεση στο Διαδίκτυο, έτσι ώστε το σύστημα να μην τραβάει τίποτα περιττό.

Επειδή Θα δημιουργήσουμε εφεδρικές εικόνες του συστήματος και για αυτό θα το σφραγίσουμε σε λειτουργία ελέγχου, στη συνέχεια μπορείτε να εξοικονομήσετε χρόνο φορτώνοντας το σύστημα σε λειτουργία ελέγχου αμέσως μετά την εγκατάσταση. Για να το κάνετε αυτό, όταν το σύστημα σας ζητήσει να επιλέξετε μια περιοχή «Ας ξεκινήσουμε με την περιοχή. Είναι σωστό" απλά πατήστε "Ctrl+Shift+F3".

Βήμα 2 - δημιουργήστε μια εικόνα συστήματος

Επειδή θα κοροϊδέψουμε το σύστημα και θα δοκιμάσουμε διάφορες νέες ρυθμίσεις, είναι πιθανό κάτι να πάει στραβά και να χρειαστεί να επαναφέρουμε το σύστημα στην αρχική του κατάσταση. Και για να επιστρέψετε γρήγορα στην αρχική του κατάσταση, πρέπει να δημιουργήσετε μια εικόνα συστήματος. Το μόνο πράγμα που θα κάνω είναι να αντιγράψω το «κύριο κιτ» - το σενάριο και το αρχείο απαντήσεων. Όλα τα αρχεία μου βρίσκονται στο φάκελο "Sysprep", τον οποίο αντιγράφω στη ρίζα του δίσκου συστήματος. Και φυσικά, θα μοιραστώ μαζί σας αυτό το «σετ κυρίων».

Sysprep.bat – για σφράγιση του συστήματος.

@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

Όταν εκκινηθεί, το σενάριο θα ελέγξει για την παρουσία του λογαριασμού "Διαχειριστής" και θα δημιουργήσει έναν εάν λείπει. Ο λογαριασμός θα προστεθεί στην ομάδα διαχειριστών.

Unattend.xml – αρχείο απόκρισης για 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>

Κατά τη σφράγιση σε λειτουργία ελέγχου, το σενάριο θα προσθέσει μια εντολή στο μητρώο για να τερματίσει τη διαδικασία "sysprep.exe", ώστε να μην κλείνει το παράθυρο sysprep με μη αυτόματο τρόπο κάθε φορά. Όταν σφραγιστεί σε λειτουργία hello, η δέσμη ενεργειών θα αφαιρέσει την εντολή για το κλείσιμο του παραθύρου από το μητρώο και η ίδια θα αλλάξει την τιμή της αρχιτεκτονικής στο αρχείο απαντήσεων στην τρέχουσα. Το αρχείο απαντήσεων περιέχει παραμέτρους για την εκκίνηση του συστήματος χωρίς αλληλεπίδραση χρήστη και μια εντολή για τη διαγραφή του φακέλου "Sysprep" στη ρίζα της μονάδας δίσκου συστήματος.

Τώρα θα σφραγίσω το σύστημα σε λειτουργία ελέγχου χρησιμοποιώντας το "Sysprep.bat" και θα καταγράψω μια εικόνα του συστήματος. Θα απεικονίσω το σύστημα χρησιμοποιώντας το DISM και θα απεικονίσω μόνο τον τόμο του συστήματος. Εάν θα απεικονίσετε μόνο τον τόμο του συστήματος και όχι ολόκληρο τον δίσκο, τότε μην ξεχάσετε να αντιγράψετε τα περιεχόμενα του καταλόγου "WindowsSystem32Recovery" στον πρώτο τόμο στο φάκελο "RecoveryWindowsRE" μετά την ανάπτυξη του συστήματος. Αυτό θα πρέπει να γίνει πριν φορτώσετε το λειτουργικό σύστημα. μετά τη φόρτωση του λειτουργικού συστήματος, ο κατάλογος "WindowsSystem32Recovery" θα είναι ήδη κενός.

Βήμα 3 – Ρωσοποίηση του συστήματος

Το πακέτο γλώσσας μπορεί να εγκατασταθεί χωρίς σύνδεση στο Διαδίκτυο εάν διαθέτετε αυτό το πακέτο. Εάν όχι, το ίδιο το σύστημα θα το κατεβάσει από το Διαδίκτυο όταν προσθέσετε τη γλώσσα στις ρυθμίσεις. Απλώς δεν χρειάζεται να πάρετε το πακέτο γλώσσας από προηγούμενες εκδόσεις του λειτουργικού συστήματος. Για τα Windows 10 1809 πρέπει να υπάρχει ένα πακέτο γλώσσας ειδικά για τα Windows 10 1809.

Η Microsoft ακολουθεί το σχέδιό της να μεταφέρει σταδιακά τις ρυθμίσεις από το κλασικό μενού στο νέο, επομένως στον κλασικό πίνακα ελέγχου δεν θα βρείτε πλέον ρυθμίσεις για την αλλαγή της γλώσσας και την εγκατάσταση ενός πακέτου γλώσσας. Αυτές οι ρυθμίσεις βρίσκονται πλέον μόνο στις παραμέτρους συστήματος.

Στη λειτουργία ελέγχου, μπορεί να αντιμετωπίσετε πρόβλημα με το άνοιγμα των ρυθμίσεων συστήματος από το μενού Έναρξη. Για να ανοίξετε τις ρυθμίσεις συστήματος, εκτελέστε την εντολή - "ms-settings:", δώστε προσοχή στην άνω και κάτω τελεία στο τέλος της εντολής, χωρίς αυτήν η εντολή θα δεν λειτουργούν. Αφού ανοίξετε τις παραμέτρους του συστήματος μία φορά χρησιμοποιώντας αυτήν την εντολή, μπορεί να ανοίξει χρησιμοποιώντας το γραφικό μενού.

Αλλά στις ρυθμίσεις συστήματος μπορείτε να εγκαταστήσετε ένα πακέτο γλώσσας εάν το σύστημα είναι συνδεδεμένο στο Διαδίκτυο, δεν υπάρχει επιλογή να επιλέξετε να εγκαταστήσετε ένα πακέτο γλώσσας από ένα τοπικό αρχείο.

Δεν θα περιγράψω τη διαδικασία εντοπισμού του συστήματος επειδή... Αυτό θα περιπλέξει σημαντικά το άρθρο, ειδικά επειδή η διαδικασία εντοπισμού είναι λεπτομερής περιγράφεται εδώ. Θα ήθελα όμως να επιστήσω την προσοχή σας στην ιδιαιτερότητα της αλλαγής της γλώσσας του συστήματος μετά την εγκατάσταση ενός πακέτου γλώσσας χρησιμοποιώντας την κονσόλα. Αυτό το χαρακτηριστικό περιγράφεται στο ίδιο wiki στο οποίο παρείχα έναν σύνδεσμο νωρίτερα, στην υποενότητα "Προσθήκη γλώσσας στη λίστα γλωσσών".

Θα εγκαταστήσω το πακέτο γλώσσας χωρίς σύνδεση στο διαδίκτυο.

Μετά την πλήρη εντοπισμό του συστήματος, φροντίστε να δημιουργήσετε μια εικόνα του συστήματος.

Βήμα 4 - Εγκαταστήστε τις απαραίτητες εφαρμογές

Επειδή Δεδομένου ότι τα συστήματα LTSB και LTSC δεν διαθέτουν χώρο αποθήκευσης εφαρμογών, η εγκατάσταση εφαρμογών από το Microsoft Store προκαλεί ορισμένες δυσκολίες, δηλαδή τη λήψη της εφαρμογής. Για τη λήψη εφαρμογών, η εταιρεία Adguard έχει κάνει μια πολύ βολική υπηρεσία - "Adguard Store", με το οποίο μπορείτε να λάβετε προσωρινούς συνδέσμους λήψης για εφαρμογές και τα στοιχεία τους.

Για να εγκαταστήσετε την εφαρμογή, θα χρειαστείτε αρχεία με τις επεκτάσεις "Appx" και "AppxBundle". Πριν εγκαταστήσετε την ίδια την εφαρμογή, πρέπει να εγκαταστήσετε τα στοιχεία της. Κατά κανόνα, τα στοιχεία μιας εφαρμογής μπορούν να διακριθούν διαισθητικά από το όνομα του αρχείου.

Για να μην παρατείνει το άρθρο, δεν θα περιγράψω λεπτομερώς τη διαδικασία εγκατάστασης εφαρμογών, ειδικά επειδή υπάρχουν πληροφορίες σχετικά με την εγκατάσταση λεπτομερείς οδηγίες. Αλλά θα προσθέσω έναν ακόμη τρόπο εγκατάστασης εφαρμογών στον τρέχοντα λογαριασμό σας. Οι εφαρμογές μπορούν να εγκατασταθούν χρησιμοποιώντας το πρόγραμμα "Εγκατάσταση εφαρμογών", αλλά για να εγκαταστήσετε εφαρμογές θα χρειαστείτε σύνδεση στο Διαδίκτυο, αλλά οι εφαρμογές μπορούν να εγκατασταθούν με διπλό κλικ και δεν θα χρειαστείτε τα στοιχεία του, όλα τα απαραίτητα στοιχεία θα κατεβάσουν και θα εγκατασταθούν "Εγκατάσταση εφαρμογών".

Και μια μικρή υπενθύμιση, κατά την εγκατάσταση της εφαρμογής στον τρέχοντα λογαριασμό, δεν θα μπορείτε να σφραγίσετε το σύστημα. Πώς να εγκαταστήσετε εφαρμογές ώστε να μπορείτε να σφραγίσετε το σύστημα, δείτε τις παραπάνω οδηγίες. Και για να ελέγξετε τη λειτουργία του multikiosk, οι υπάρχουσες εφαρμογές είναι αρκετά επαρκείς.

Βήμα 5 – δημιουργία αρχείου διαμόρφωσης για το multikiosk

Τώρα φτάνουμε στο πιο ενδιαφέρον μέρος - τη ρύθμιση της λειτουργίας kiosk. Ας δούμε οδηγίες σύμφωνα με τις ρυθμίσεις που βλέπουμε. Πρώτα απ 'όλα, θα χρειαστεί να δημιουργήσουμε ένα αρχείο διαμόρφωσης XML, ένα πλήρες παράδειγμα του οποίου μπορείτε να βρείτε εδώ. Κοίτα εδώ.

Ας ξεκινήσουμε με τη ρύθμιση της διάταξης πλακιδίων. Ο ευκολότερος τρόπος για να δημιουργήσετε μια διαμόρφωση προσαρμογής πλακιδίων XML είναι εξάγουν την τρέχουσα κατάστασή τους.

Πρώτα από όλα, ας προσθέσουμε πλακίδια των εφαρμογών που χρειαζόμαστε στο μενού Έναρξη. Καλέστε την αναζήτηση "Win+s", βρείτε την επιθυμητή εφαρμογή, κάντε δεξί κλικ πάνω της και επιλέξτε "Καρφίτσωμα στην οθόνη έναρξης".

Έχω καρφιτσώσει τις παρακάτω εφαρμογές:

  • Σημειωματάριο
  • Αριθμομηχανή
  • Internet Explorer
  • Χρώμα
  • WordPad
  • Παράμετροι
  • Ασφάλεια των Windows

Οι δύο τελευταίες εφαρμογές καρφιτσώθηκαν επειδή... Απλώς δεν υπάρχουν άλλες καθολικές εφαρμογές στο τυπικό πακέτο LTSC. Σημειώστε ότι τα πλακίδια επιφάνειας εργασίας συνδέονται με συντομεύσεις. Τώρα, μετακινώντας τα πλακίδια απευθείας στο μενού Έναρξη, θα χωρίσω τα καρφιτσωμένα πλακίδια σε δύο ομάδες. Για να δημιουργήσετε μια νέα ομάδα πλακιδίων, σύρετε ένα πλακίδιο σημαντικά ψηλότερα ή χαμηλότερα από άλλα πλακίδια, γεγονός που θα τονίσει ένα διαισθητικό διαχωριστικό. Μπορείτε να ονομάσετε τις ομάδες κατά την κρίση σας· για να το κάνετε αυτό, τοποθετήστε τον κέρσορα του ποντικιού πάνω από την ομάδα και όταν εμφανιστεί η επιγραφή "Ονομάστε την ομάδα", κάντε κλικ στο αριστερό κουμπί του ποντικιού. Θα ονομάσω την πρώτη ομάδα "Ρυθμίσεις", θα περιλαμβάνει τα πλακίδια "Ρυθμίσεις" και "Ασφάλεια των Windows". Θα ονομάσω τη δεύτερη ομάδα «Εφαρμογές γραφείου», η οποία θα περιλαμβάνει όλα τα άλλα πλακίδια. Παρεμπιπτόντως, μπορείτε να μετακινήσετε ολόκληρες ομάδες πλακιδίων σύροντάς τις χρησιμοποιώντας τις δύο λωρίδες που βρίσκονται στην επάνω δεξιά γωνία του ονόματος της ομάδας.

Επειδή Στο πλακίδιο "Windows Security" το όνομα δεν ταιριάζει πλήρως, θα αλλάξω το μέγεθός του σε "Wide". Για να αλλάξετε το μέγεθος ενός πλακιδίου, κάντε δεξί κλικ στο πλακίδιο και επιλέξτε "Αλλαγή μεγέθους".

Μετά τη διαμόρφωση, εξάγουμε την τρέχουσα κατάσταση και εκτελούμε την εντολή στο περιβάλλον PowerShell – «Export-StartLayout – διαδρομή C:SysprepStartLayout.xml».

Στη συνέχεια, ο ευκολότερος τρόπος δεν είναι να δημιουργήσετε μόνοι σας το αρχείο ρυθμίσεων, αλλά πάρτε ένα παράδειγμα αρχείου από εδώ ρυθμίσεις – κάντε κλικ στο κουμπί «Αντιγραφή», επικολλήστε τα περιεχόμενα στο σημειωματάριο και αποθηκεύστε ως «MultiAppKiosk.xml». Τώρα αλλάζουμε τις ρυθμίσεις στις δικές μας. Για να αλλάξετε τις ρυθμίσεις των συνημμένων πλακιδίων, αντιγράψτε ολόκληρο το μπλοκ "StartLayoutCollection" από το "StartLayout.xml" στο "MultiAppKiosk.xml". Για να προσθέσετε εφαρμογές στις επιτρεπόμενες, πρέπει να εισαγάγετε αναγνωριστικά καθολικής εφαρμογής στην ενότητα "AllowedApps" και στο ίδιο μπλοκ να προσθέσετε την πλήρη διαδρομή στα εκτελέσιμα αρχεία των κλασικών εφαρμογών, η οποία καθορίζεται στις ιδιότητες των συντομεύσεων στις οποίες πλακάκια παραπέμπουν. Για να φτάσετε γρήγορα σε μια συντόμευση, κάντε δεξί κλικ σε ένα καρφιτσωμένο πλακίδιο και μεταβείτε στο Περισσότερα > Μετάβαση στη θέση αρχείου. Λάβετε υπόψη ότι η παράμετρος "AppUserModelId" χρησιμοποιείται για τον καθορισμό του Universal App ID και η παράμετρος "DesktopAppPath" χρησιμοποιείται για τον καθορισμό της πλήρους διαδρομής προς την εφαρμογή επιφάνειας εργασίας. Και μια ακόμη μικρή απόχρωση, εάν σκοπεύετε να χρησιμοποιήσετε το IE σε σύστημα x64, τότε στη λίστα των επιτρεπόμενων εφαρμογών πρέπει να καθορίσετε δύο διαδρομές για το εκτελέσιμο αρχείο "Program FilesInternet Exploreriexplore.exe" και "Program Files (x86)Internet Exploreriexplore. exe”.

Δεν θα δώσω πρόσβαση σε φακέλους, επομένως διαγράφω την ενότητα "FileExplorerNamespaceRestrictions".

Η εμφάνιση της γραμμής εργασιών δεν με ενοχλεί, επομένως αφήνω τα πάντα ως έχουν στην ενότητα "Γραμμή εργασιών".

Στο παράδειγμα, καθορίζονται δύο προφίλ, αλλά θα έχω μόνο ένα προφίλ, επομένως η ενότητα με το δεύτερο προφίλ μπορεί να διαγραφεί. Πριν την απεγκατάσταση, δώστε προσοχή στο παράδειγμα της αυτόματης εκκίνησης μιας εφαρμογής με ορίσματα.

Στην ενότητα "Διαμορφώσεις", οι λογαριασμοί συνδέονται με προφίλ. Λάβετε υπόψη ότι πολλοί λογαριασμοί μπορούν να συνδεθούν σε ένα προφίλ. Αλλά επειδή Ενδιαφέρομαι μόνο για έναν λογαριασμό, τότε θα διαγράψω όλες τις δεσμεύσεις εκτός από την πρώτη - τα μπλοκ "Config". Στο υπόλοιπο δέσιμο θα γράψω το όνομα χρήστη «Χρήστης».

Πήρα αυτό το αρχείο με παραμέτρους

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>

Όταν δημιουργείτε τα αρχεία διαμόρφωσης XML, μην ξεχνάτε ότι κάθε προφίλ πρέπει να έχει ένα μοναδικό αναγνωριστικό, και όχι μόνο σε ένα αρχείο XML, αλλά σε ένα λειτουργικό σύστημα. Εκείνοι. Στην ιδανική περίπτωση, για να αποφύγετε τη σύγχυση, μπορείτε να δημιουργήσετε ένα νέο αναγνωριστικό κάθε φορά, αυτό μπορεί να γίνει στο περιβάλλον PowerShell χρησιμοποιώντας την εντολή «[guid]::NewGuid()». Και φροντίστε να αποθηκεύσετε το αρχείο σε κωδικοποίηση "UTF-8", εάν το αρχείο είναι αποθηκευμένο σε κωδικοποίηση "ANSI", τότε κατά τη δημιουργία του πακέτου προετοιμασίας θα λάβετε ένα σφάλμα εάν το αρχείο XML περιέχει κυριλλικό.

Βήμα 6 – εφαρμογή ρυθμίσεων multikiosk

Ας δούμε δύο τρόπους εφαρμογής των ρυθμίσεων που περιγράφονται στο αρχείο διαμόρφωσης. Το πρώτο είναι μέσω ενός πακέτου παροχής, το οποίο πρέπει να δημιουργηθεί σε ICD. Για κάποιους, ίσως αυτή η μέθοδος θα είναι πιο οικεία. Η δεύτερη είναι η χρήση του "MDM Bridge WMI Provider", αυτή η μέθοδος μου φάνηκε πιο βολική.

Μέθοδος # 1

Ποιος δεν έχει ICD; κατεβάστε το ADK και εγκαταστήστε. Η εγκατάσταση του ADK είναι πολύ απλή· το σύνολο των στοιχείων μπορεί να παραμείνει ως προεπιλογή.

Εκκινήστε το ICD, κάντε κλικ στο πλακίδιο «Προηγμένη προετοιμασία», καθορίστε το όνομα και τον φάκελο του έργου και κάντε κλικ στο «Επόμενο». Στο επόμενο παράθυρο, επιλέξτε «Όλες οι εκδόσεις της επιφάνειας εργασίας των Windows» και κάντε κλικ στο «Επόμενο». Μπορείτε να παραλείψετε την εισαγωγή του πακέτου προετοιμασίας, κάντε κλικ στο «Τέλος».

Αναπτύξτε το αναπτυσσόμενο μενού "Ρυθμίσεις χρόνου εκτέλεσης", στη συνέχεια αναπτύξτε το υπομενού "AssignedAccess" και επιλέξτε "MultiAppAssignedAccessSettings". Στο επάνω μέρος του μεσαίου τμήματος του παραθύρου ICD, κάντε κλικ στο κουμπί «Αναζήτηση» και υποδείξτε τη θέση του αρχείου XML με τις ρυθμίσεις. Σε κάθε περίπτωση, μπορείτε να αποθηκεύσετε το έργο πατώντας «Ctrl+s». Στο επάνω αριστερό μέρος του ICD, επιλέξτε «Εξαγωγή» και επιλέξτε «Πακέτο Παροχής» από το αναπτυσσόμενο μενού. Ως κάτοχος, επιλέξτε «Διαχειριστής IT»· όλες οι άλλες ερωτήσεις μπορούν να παραβλεφθούν κάνοντας κλικ στο «Επόμενο» και στο τέλος κάντε κλικ στο «Δημιουργία» και «Τέλος».

Στο εγκατεστημένο σύστημα, μην ξεχάσετε να δημιουργήσετε έναν χρήστη "Χρήστη", δεν μπορεί να προστεθεί στην ομάδα "Διαχειριστές", διαφορετικά το multikiosk δεν θα λειτουργήσει. Δημιούργησα έναν χρήστη στη Διαχείριση Υπολογιστών με κωδικό πρόσβασης που δεν λήγει ποτέ.

Τώρα εκτελούμε το πακέτο προετοιμασίας στο προηγουμένως εγκατεστημένο σύστημα. Μετά την εφαρμογή του πακέτου προετοιμασίας, το μενού Έναρξη και το μενού του διαχειριστή θα αλλάξουν. Στην αριστερή στήλη έναρξης τα κουμπιά θα πρέπει να εξαφανιστούν: «Έγγραφα», «Εικόνα», «Επιλογές». Εάν το μενού έναρξης δεν έχει αλλάξει, τότε κάτι έχει πάει στραβά. Ένα εγκατεστημένο πακέτο μπορεί να αφαιρεθεί ανοίγοντας το παράθυρο Ρυθμίσεις > Λογαριασμοί > Πρόσβαση σε λογαριασμό εργασίας ή σχολείου > Προσθήκη ή κατάργηση πακέτου παροχής.

Εάν το μενού έναρξης έχει αλλάξει, τότε οι ρυθμίσεις εφαρμόζονται στο σύστημα, συνδεθείτε ως ο χρήστης για τον οποίο έχει διαμορφωθεί το multikiosk και δείτε το αποτέλεσμα.

Μέθοδος # 2

Εφαρμογή ρυθμίσεων χρησιμοποιώντας το "MDM Bridge WMI Provider" περιγράφεται εδώ. Η ευκολία αυτής της μεθόδου είναι η ευελιξία στη χρήση και η δυνατότητα να απαλλαγούμε από πολλές χειροκίνητες λειτουργίες που απαιτούνται για τη δημιουργία ενός πακέτου προετοιμασίας. Εδώ ο καθένας μπορεί να πάρει μια απόφαση για τον εαυτό του που θα τον βολεύει. Έκανα μερικά σενάρια για τον εαυτό μου.

MiltiKiosk.bat – σενάριο εκκίνησης

@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 – κύριο σενάριο

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

Εάν θέλετε να χρησιμοποιήσετε τη λύση μου, αποθηκεύστε τα παραπάνω σενάρια με τα αρχικά τους ονόματα σε έναν φάκελο και τοποθετήστε το αρχείο "PsExec.exe" στον ίδιο φάκελο. Στον ίδιο φάκελο, δημιουργήστε έναν φάκελο "XML" και αντιγράψτε τα αρχεία XML για να διαμορφώσετε το multikiosk σε αυτόν. Θα χρησιμοποιήσω το ίδιο αρχείο με την πρώτη μέθοδο.

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>

Λίγα λόγια για τα χαρακτηριστικά του σεναρίου. Το σενάριο έχει σχεδιαστεί για να χρησιμοποιεί αρχεία XML με κωδικοποίηση "UTF8", εάν θέλετε να χρησιμοποιήσετε κωδικοποίηση "ANSI", αφαιρέστε την παράμετρο "encoding UTF8" από την επιλογή ανάγνωσης αρχείων. Πρέπει να τοποθετήσετε αρχεία XML στο φάκελο "XML" χωρίς να αντικαταστήσετε χαρακτήρες· το ίδιο το σενάριο θα αντικαταστήσει τους ειδικούς χαρακτήρες με τους κατάλληλους χαρακτηρισμούς. Για να μην μπερδευτείτε στα GUID της σύνδεσης των χρηστών με τα προφίλ, μπορείτε απλώς να υποδείξετε τον αριθμό χρήστη ή το όνομα σε σγουρά άγκιστρα· όλα τα περιεχόμενα σε σγουρά άγκιστρα θα αντικατασταθούν με GUID.

Η χρήση του σεναρίου είναι πολύ απλή, απλώς εκτελέστε το και επιλέξτε το απαιτούμενο στοιχείο. Για να αλλάξετε την τρέχουσα διαμόρφωση σε νέα, δεν είναι απαραίτητο να διαγράψετε την τρέχουσα, θα αντικατασταθεί. Μην ξεχάσετε να δημιουργήσετε χρήστες που καθορίζονται στο αρχείο διαμόρφωσης.

Κατά την προβολή της τρέχουσας διαμόρφωσης multikiosk στην ίδια περίοδο λειτουργίας στην οποία εφαρμόστηκε, αντί για ειδικούς χαρακτήρες, θα εμφανιστούν συνδυασμοί χαρακτήρων αντικατάστασης. Μετά την αλλαγή της συνεδρίας (επανεκκίνηση του σεναρίου), όλοι οι ειδικοί χαρακτήρες θα εμφανίζονται στην αρχική τους μορφή.

Βήμα 7 - Σφράγιση του συστήματος

Το multikiosk λειτουργεί, λοιπόν, αυτό είναι όλο, φαίνεται...

Εάν όλα πάνε σύμφωνα με το σχέδιο, τότε δεν παρατηρείτε κάτι.

Μην ξεχνάτε ότι πρέπει ακόμα να αλλάξουμε το σύστημα από τη λειτουργία ελέγχου στη λειτουργία υποδοχής. Λοιπόν, είμαστε έτοιμοι για αυτό, ξεκινάμε το "Sysprep.bat", επιλέξτε το σημείο 2, το σύστημα είναι σφραγισμένο. Ενεργοποιούμε τη συσκευή, το σύστημα εκκινεί, συνδέουμε τον λογαριασμό χρήστη για τον οποίο έχει διαμορφωθεί το multikiosk, αλλά δεν μπορούμε να συνδεθούμε. Μετά το μήνυμα "Καλώς ήρθατε", εμφανίζεται το μήνυμα "Αποσύνδεση".

Στην αρχή ήθελα να περιγράψω μόνο τη λύση στο πρόβλημα, αλλά αργότερα αποφάσισα να περιγράψω τα βήματα για να εντοπίσω το πρόβλημα και να βρω την απλούστερη λύση γιατί... Σίγουρα πολλοί αναγνώστες θα βασανιστούν από αόριστες αμφιβολίες - "Κι αν είναι έτσι...". Νομίζω ότι η περιγραφή των διαφόρων πειραμάτων θα σας εξοικονομήσει σημαντικό χρόνο εάν θέλετε να βρείτε άλλη λύση. Για να γίνουν οι πληροφορίες όσο το δυνατόν ακριβέστερες και για να βεβαιωθώ για άλλη μια φορά ότι δεν υπάρχουν σφάλματα, θα περιγράψω τα πειράματα στη μορφή "έγινε και καταγεγραμμένη". Εκείνοι. Θα ξανακάνω τα πειράματα που περιγράφονται.

πειράματα

Τι κάναμε; Υπάρχουν δύο λογαριασμοί στο σύστημα:

"Διαχειριστής" - στην ομάδα "Διαχειριστές".
"Χρήστης" - στην ομάδα "Χρήστες".
Στη λειτουργία ελέγχου, το multikiosk λειτούργησε, αλλά όταν σφραγίστηκε, δεν λειτούργησε.

Πείραμα 1

Διαγράφουμε το εγκατεστημένο πακέτο προετοιμασίας, στο συμπληρωματικό πρόγραμμα "Διαχείριση Υπολογιστών" διαγράφουμε τον χρήστη "Χρήστης" και δημιουργούμε έναν νέο χρήστη με το όνομα "Χρήστης", εφαρμόζουμε το πακέτο προετοιμασίας, πηγαίνουμε στο λογαριασμό "Χρήστης" - κάνει δεν λειτουργούν. Πηγαίνουμε με το όνομα "Διαχειριστής", αφαιρούμε τον χρήστη "Χρήστης" από την ομάδα "Χρήστες", τον προσθέτουμε στην ομάδα "Διαχειριστές", πηγαίνουμε με το όνομα "Χρήστης" - δεν λειτουργεί. Συνδεόμαστε με το όνομα "Διαχειριστής", διαγράφουμε το πακέτο προετοιμασίας με το multikiosk, συνδέουμε με το όνομα "Χρήστης" - καταφέραμε να συνδεθούμε, αλλά φυσικά η λειτουργία multikiosk δεν λειτουργεί επειδή Το πακέτο παροχής έχει αφαιρεθεί.

Πείραμα 2

Ανεβάζουμε την εικόνα του συστήματος - Russified σε λειτουργία ελέγχου.

Το λειτουργικό σύστημα έχει φορτωθεί, πατήστε "Win+r", γιατί Το παράθυρο του sysprep έκλεισε αυτόματα, εκτελέστε την εντολή "sysprep" και εκτελέστε το "sysprep" στο παράθυρο που ανοίγει. Ρυθμίσεις Sysprep στο παράθυρο: "Μετάβαση στο παράθυρο υποδοχής συστήματος (OOBE)", "Προετοιμασία για χρήση", "Επανεκκίνηση". Κάντε κλικ στο "OK" και περιμένετε τον χαιρετισμό του λειτουργικού συστήματος. Απαντάμε στις ερωτήσεις κατά την εκκίνηση του συστήματος για πρώτη φορά: "Συνέχεια στην επιλεγμένη γλώσσα;" - "Ρωσική"; περιοχή - Ρωσία; διάταξη πληκτρολογίου – Ρωσικά. προσθέστε μια δεύτερη διάταξη πληκτρολογίου - παράβλεψη. "Ας σας συνδέσουμε στο δίκτυο" - "Παράλειψη προς το παρόν"; συνδεθείτε στο Διαδίκτυο - όχι. συμφωνία άδειας χρήσης - αποδοχή? "Ποιος θα χρησιμοποιήσει αυτόν τον υπολογιστή" - "Δοκιμή"; δημιουργία κωδικού πρόσβασης - αφήστε το πεδίο κενό. Βολική λειτουργία σε διαφορετικές συσκευές – όχι. Ρυθμίσεις απορρήτου - αποδεχτείτε. Το λειτουργικό σύστημα έχει φορτωθεί, στο συμπληρωματικό πρόγραμμα "Διαχείριση Υπολογιστών" δημιουργούμε έναν χρήστη με το όνομα "Χρήστης", προσθέτουμε το πακέτο προετοιμασίας. Το αποτέλεσμα είναι ότι δεν λειτουργεί.

Πείραμα 3

Ανεβάζουμε την εικόνα του συστήματος - Russified σε λειτουργία ελέγχου.

Το λειτουργικό σύστημα έχει φορτωθεί, συνδέστε το σύστημα στο Internet, εκτελέστε την εντολή "gpedit.msc" και στην ενότητα "Windows Update" ενεργοποιήστε την επιλογή "Ενεργοποίηση προτεινόμενων ενημερώσεων μέσω αυτόματων ενημερώσεων", κάντε επανεκκίνηση για κάθε περίπτωση. Στο κέντρο ενημέρωσης, κάντε κλικ στο «Έλεγχος για ενημερώσεις» και επανεκκινήστε μέχρι να εγκατασταθούν όλες οι ενημερώσεις. Αποσυνδέστε το σύστημα από το Διαδίκτυο. Εκκινούμε το "sysprep" σε γραφική λειτουργία και επαναλαμβάνουμε όλα τα βήματα που περιγράφονται στο προηγούμενο βήμα, από την εκτέλεση του βοηθητικού προγράμματος "sysprep" έως την προσθήκη του πακέτου προετοιμασίας. Το αποτέλεσμα είναι ότι δεν λειτουργεί.

Πείραμα 4

Ανεβάζουμε την εικόνα συστήματος - Αγγλικά σε λειτουργία ελέγχου.

Εκκινούμε το "sysprep" σε γραφική λειτουργία, σφραγίζουμε το λειτουργικό σύστημα με τις ίδιες παραμέτρους όπως στο πείραμα 2. Όταν το σύστημα εκκινήσει για πρώτη φορά, επιλέγουμε τις ίδιες παραμέτρους όπως στο πείραμα 2, με εξαίρεση τις τοπικές και γλωσσικές παραμέτρους επειδή Δεν υπάρχει ρωσική γλώσσα. Με τον ίδιο τρόπο, δημιουργήστε έναν χρήστη «Χρήστη» και προσθέστε ένα πακέτο παροχής. Το αποτέλεσμα είναι ότι λειτουργεί. Εκείνοι. Το πρόβλημα σχετίζεται με τον εντοπισμό.

Πείραμα 5

Ανεβάζουμε την εικόνα του συστήματος - Russified σε λειτουργία ελέγχου.

Στο συμπληρωματικό πρόγραμμα "Διαχείριση Υπολογιστών", δημιουργήστε έναν χρήστη "Χρήστη", προσθέστε ένα πακέτο προετοιμασίας, μεταβείτε στον λογαριασμό "Χρήστης", το multi-kiosk λειτουργεί.

Αποσυνδεθείτε από τον λογαριασμό σας και συνδεθείτε στον λογαριασμό «Διαχειριστής». Εκκινούμε το PowerShell με δικαιώματα διαχειριστή, εκτελούμε την εντολή "Dism /online /Get-Intl" και βλέπουμε "Προεπιλεγμένη γλώσσα διεπαφής χρήστη: en-US".

Κάνουμε εκκίνηση από τη μονάδα flash στο WinPE, το αναπτυγμένο λειτουργικό σύστημα βρίσκεται στη μονάδα μου E. Εκτελούμε την εντολή "Dism /image:E: /Set-UILang:ru-ru". Εξετάζουμε το αποτέλεσμα, εκτελούμε το "Dism /image:E: /Get-Intl" και βλέπουμε "Προεπιλεγμένη γλώσσα διεπαφής χρήστη συστήματος: ru-RU".

Κάνουμε εκκίνηση στο σύστημα, συνδεθείτε στο λογαριασμό "Χρήστης", το multikiosk δεν λειτουργεί.

Για να καθορίσουμε με σαφήνεια τη σχέση αιτίου-αποτελέσματος του προβλήματος, ας προσπαθήσουμε ξανά να κάνουμε το multi-kiosk να λειτουργεί και να μη λειτουργεί.

Κάνουμε εκκίνηση από τη μονάδα flash στο WinPE, το αναπτυγμένο λειτουργικό σύστημα βρίσκεται στη μονάδα μου E. Εκτελούμε την εντολή "Dism /image:E: /Set-UILang:en-us". Εξετάζουμε το αποτέλεσμα, εκτελούμε το “Dism /image:E: /Get-Intl” και βλέπουμε το “Default system UI language: en-US”.

Κάνουμε εκκίνηση στο σύστημα, συνδέουμε στο λογαριασμό "Χρήστης", το multikiosk λειτουργεί.

Κάνουμε εκκίνηση από τη μονάδα flash στο WinPE, το αναπτυγμένο λειτουργικό σύστημα βρίσκεται στη μονάδα μου E. Εκτελούμε την εντολή "Dism /image:E: /Set-UILang:ru-ru". Εξετάζουμε το αποτέλεσμα, εκτελούμε το "Dism /image:E: /Get-Intl" και βλέπουμε "Προεπιλεγμένη γλώσσα διεπαφής χρήστη συστήματος: ru-RU".

Κάνουμε εκκίνηση στο σύστημα, συνδεθείτε στο λογαριασμό "Χρήστης", το multikiosk δεν λειτουργεί.

Εκείνοι. μπορείτε να δείτε μια σαφή εξάρτηση της απόδοσης του περιπτέρου από την προεπιλεγμένη γλώσσα διεπαφής χρήστη. Ίσως υπάρχουν κάποιοι άλλοι παράγοντες που επηρεάζουν την απόδοση του multikiosk;

Πείραμα 6

Για την καθαρότητα του πειράματος, ξαναγεμίζουμε το σύστημα. Ανεβάζουμε την εικόνα του συστήματος - Russified σε λειτουργία ελέγχου.

Εκκινούμε το "sysprep" σε γραφική λειτουργία, σφραγίζουμε το λειτουργικό σύστημα με τις ίδιες παραμέτρους όπως στο πείραμα 2. Περιμένουμε να μας χαιρετήσει το λειτουργικό σύστημα και να απαντήσει στις ερωτήσεις: "Συνέχεια στην επιλεγμένη γλώσσα;" - "Αγγλικά Ηνωμένες Πολιτείες)"; περιοχή - Ρωσία; Διάταξη πληκτρολογίου - Ρωσικά. Επιπλέον, όλες οι παράμετροι επιλέχθηκαν όπως στο πείραμα 2.

Ας δούμε τις προεπιλεγμένες ρυθμίσεις γλώσσας διεπαφής χρήστη. Εκτελούμε την εντολή “Dism /online /Get-Intl” και βλέπουμε “Default system UI language: en-US”. Στο συμπληρωματικό πρόγραμμα "Διαχείριση Υπολογιστών", δημιουργήστε έναν χρήστη "Χρήστη", προσθέστε ένα πακέτο προετοιμασίας, μεταβείτε στον λογαριασμό "Χρήστης", το multi-kiosk λειτουργεί.

Προσπαθούμε να σπάσουμε το περίπτερο αλλάζοντας την προεπιλεγμένη γλώσσα διεπαφής χρήστη. Πηγαίνουμε στον χρήστη "Δοκιμή", ο οποίος δημιουργήθηκε κατά την πρώτη εκκίνηση του συστήματος και ενεργοποιούμε την αυτόματη σύνδεση για αυτόν, ώστε το σύστημα να μην εκκινήσει αμέσως στον λογαριασμό "Χρήστης". Εκτελέστε το "netplwiz", επιλέξτε τον χρήστη "Δοκιμή", αποεπιλέξτε το πλαίσιο ελέγχου "Απαιτείται όνομα χρήστη και κωδικός πρόσβασης" και εφαρμόστε τις παραμέτρους.

Εκκίνηση από μια μονάδα flash στο WinPE. Εκτελέστε την εντολή "Dism /image:E: /Set-UILang:ru-ru". Εξετάζουμε το αποτέλεσμα, εκτελούμε το "Dism /image:E: /Get-Intl" και βλέπουμε "Προεπιλεγμένη γλώσσα διεπαφής χρήστη συστήματος: ru-RU".

Κάνουμε εκκίνηση στο σύστημα, προσπαθούμε να συνδεθείτε στο λογαριασμό "Χρήστης", το multikiosk λειτουργεί. Εκείνοι. δεν μπορεί να σπάσει. Είναι δυνατόν να λειτουργήσει με αυτόν τον τρόπο;

Πείραμα 7

Ανεβάζουμε την εικόνα του συστήματος - Russified σε λειτουργία ελέγχου.

Εκκινούμε το "Sysprep.bat", επιλέγουμε το σημείο 2. Κάνουμε εκκίνηση στο σύστημα, δημιουργούμε τον χρήστη "Χρήστης" στο συμπληρωματικό πρόγραμμα "Διαχείριση Υπολογιστών", προσθέτουμε το πακέτο προετοιμασίας, πηγαίνουμε στο λογαριασμό "Χρήστης", το πολυ- το κιόσκι δεν λειτουργεί.

Εκκίνηση από μια μονάδα flash στο WinPE. Εκτελέστε την εντολή "Dism /image:E: /Set-UILang:en-us". Εξετάζουμε το αποτέλεσμα, εκτελούμε το “Dism /image:E: /Get-Intl” και βλέπουμε το “Default system UI language: en-US”.

Κάνουμε εκκίνηση στο σύστημα, προσπαθούμε να συνδεθείτε στο λογαριασμό "Χρήστης", το multikiosk δεν λειτουργεί.

Αποδεικνύεται ότι αλλάζοντας την προεπιλεγμένη ρύθμιση γλώσσας διεπαφής χρήστη, μπορείτε να επηρεάσετε την απόδοση του multikiosk μόνο όταν το σύστημα βρίσκεται σε λειτουργία ελέγχου ή κατά την πρώτη εκκίνηση μετά τη σφράγιση του συστήματος. Αυτό σημαίνει ότι θα πρέπει να σφραγίσετε το σύστημα με ένα αρχείο απόκρισης στο οποίο θα επιλεγεί η γλώσσα του συστήματος στα Αγγλικά και, στη συνέχεια, να αλλάξετε τις ρυθμίσεις συστήματος έτσι ώστε η διεπαφή να είναι ρωσική. Δεν είναι πολύ καλή λύση. Ίσως το πρόβλημα μπορεί να λυθεί με την εγκατάσταση ενός πακέτου γλωσσών ή την εγκατάσταση πρόσθετων πακέτων γλωσσών;

Πείραμα 8

Ανεβάζουμε την εικόνα συστήματος - Αγγλικά σε λειτουργία ελέγχου.

Συνδεόμαστε στο Διαδίκτυο, στις παραμέτρους συστήματος μεταβείτε στην ενότητα "Γλώσσα", επιλέξτε "Προσθήκη γλώσσας", επιλέξτε τη γλώσσα "Ρωσικά", κάντε κλικ στο "Επόμενο", αφήστε τις παραμέτρους εγκατάστασης ως προεπιλογές, κάντε κλικ στο "Εγκατάσταση", μετά την εγκατάσταση το πακέτο γλώσσας κάνουμε επανεκκίνηση του συστήματος, τώρα σε Russified. Αποσυνδέστε το σύστημα από το Διαδίκτυο, εκτελέστε το "Sysprep.bat", επιλέξτε το σημείο 2.

Μετά τη φόρτωση του συστήματος, στο συμπληρωματικό πρόγραμμα "Διαχείριση Υπολογιστών", δημιουργήστε τον χρήστη "Χρήστης", προσθέστε το πακέτο προετοιμασίας, μεταβείτε στον λογαριασμό "Χρήστης", το multi-kiosk δεν λειτουργεί.

Πείραμα 9

Ας προσπαθήσουμε να ρωσοποιήσουμε το σύστημα πριν από την εγκατάσταση, σε λειτουργία εκτός σύνδεσης. Παράλληλα θα υπάρχει ένα σύντομο εκπαιδευτικό πρόγραμμα για τον εντοπισμό της διανομής.

Παίρνω μια μονάδα flash με καθαρή αρχική διανομή - X21-96381. Θα είναι κίνηση "Ε". Για την προσάρτηση εικόνων, δημιουργώ φακέλους: “c:MountInstall”, “c:MountWinre”, “c:MountBoot”. Παίρνω ένα σύνολο πακέτων τοπικής προσαρμογής - X21-87814. Και στον φάκελο "c:Mount" αντιγράφω τα πακέτα από αυτόν: "Microsoft-Windows-Client-Language-Pack_x86_ru-ru.cab", "lp.cab", "WinPE-Setup_ru-ru.cab". Εκκινώ την κονσόλα με δικαιώματα διαχειριστή. Νομίζω ότι οι περαιτέρω εντολές θα είναι σαφείς χωρίς σχόλια.

Εντολές εντοπισμού

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

Εκκινούμε από τη μονάδα flash, επιλέγουμε τη ρωσική γλώσσα και εγκαθιστούμε το σύστημα σε έναν κενό δίσκο. Όταν το σύστημα σας ζητήσει να επιλέξετε μια περιοχή, πατήστε "Ctrl+Shift+F3". Στο συμπληρωματικό πρόγραμμα "Διαχείριση Υπολογιστών", δημιουργήστε έναν χρήστη "Χρήστη", προσθέστε ένα πακέτο προετοιμασίας, μεταβείτε στον λογαριασμό "Χρήστης", το multi-kiosk δεν λειτουργεί.

Εκκίνηση από μια μονάδα flash στο WinPE. Εκτελέστε την εντολή "Dism /image:E: /Set-UILang:en-us".

Κάνουμε εκκίνηση στο σύστημα, προσπαθούμε να συνδεθείτε στο λογαριασμό "Χρήστης", το multikiosk λειτουργεί.

Προφανώς το πρόβλημα δεν είναι στις μεθόδους προσθήκης πακέτου, ας προσπαθήσουμε να προσθέσουμε επιπλέον πακέτα.

Πείραμα 10

Παίρνουμε τη μονάδα flash που ετοιμάσαμε στο προηγούμενο βήμα.

Παίρνουμε το πακέτο "Feat on Demand" - X21-87815. Αντιγράφω τα πακέτα από αυτό στο φάκελο "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».

Εκκινήστε την κονσόλα με δικαιώματα διαχειριστή και εκτελέστε τις εντολές:

Ομάδες

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

Εκκινούμε από τη μονάδα flash, επιλέγουμε τη ρωσική γλώσσα και εγκαθιστούμε το σύστημα σε έναν κενό δίσκο. Όταν το σύστημα σας ζητήσει να επιλέξετε μια περιοχή, πατήστε "Ctrl+Shift+F3". Στο συμπληρωματικό πρόγραμμα "Διαχείριση υπολογιστών", δημιουργήστε τον χρήστη "Χρήστης", προσθέστε το πακέτο παροχής και συνδεθείτε στο λογαριασμό "Χρήστης". Πήρα μια μαύρη οθόνη που κρεμόταν για πολλή ώρα, οπότε εκκίνησα θερμά το σύστημα.

Διαγράφουμε το πακέτο προετοιμασίας, κάνουμε είσοδο ως «Χρήστης», επανεκκινούμε το σύστημα, προσθέτουμε το πακέτο προετοιμασίας, το multikiosk δεν λειτουργεί.

Εκκίνηση από μια μονάδα flash στο WinPE. Εκτελέστε την εντολή "Dism /image:E: /Set-UILang:en-us".

Κάνουμε εκκίνηση στο σύστημα, προσπαθούμε να συνδεθείτε στο λογαριασμό "Χρήστης", το multikiosk λειτουργεί.

Λύση

Κανονικοί ήρωες. Πάντα κάνουν παράκαμψη!

Διάφορες μέθοδοι εγκατάστασης πακέτων τοπικής προσαρμογής δεν έλυσαν το πρόβλημα, πράγμα που σημαίνει ότι θα πρέπει να εγκαταστήσετε τη γλώσσα "en-us" στην πρώτη εκκίνηση μετά τη σφράγιση και να αλλάξετε τις ρυθμίσεις γλώσσας μετά την πρώτη εκκίνηση.

Ανεβάζουμε την εικόνα του συστήματος - Russified σε λειτουργία ελέγχου.

Στο αρχείο “Unattend.xml” πληκτρολογήστε “en-US” στην παράμετρο, τρέξτε το “Sysprep.bat”, επιλέξτε το σημείο 2 και δείτε τι πήραμε. Η οθόνη καλωσορίσματος είναι στα αγγλικά, το multi-kiosk λειτουργεί. Αυτό σημαίνει ότι πρέπει να προσθέσετε μια εντολή στο "Unattend.xml" για να αλλάξετε τη γλώσσα χαιρετισμού. Και για να το κάνετε αυτό, πρέπει να εκτελέσετε την εντολή "control intl.cpl,, /f:" που υποδεικνύει το αρχείο διαμόρφωσης, το οποίο θα καθορίσει την αντιγραφή των τρεχουσών παραμέτρων στην οθόνη καλωσορίσματος. Τα περιεχόμενα του αρχείου ρυθμίσεων θα μοιάζουν με αυτό.

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

Επειδή θα αντιγράψει τις ρυθμίσεις του τρέχοντος χρήστη, τότε η εντολή πρέπει να εκτελεστεί αφού συνδεθεί ο χρήστης, πράγμα που σημαίνει ότι θα χρειαστούμε. Υπάρχει ένα μικρό «αλλά», η εκτέλεση θα πραγματοποιηθεί αφού συνδεθεί ένας χρήστης με δικαιώματα διαχειριστή. Και δεν θα ήθελα να δημιουργήσω ένα πρόσθετο αρχείο που θα χρειαζόταν για την επιτυχή εκτέλεση της εντολής. Είναι καλύτερα να εφαρμόσετε ολόκληρη τη λύση σε ένα μόνο αρχείο - "Unattend.xml". Για να το κάνετε αυτό, θα χρειαστεί απλώς να εκτελέσετε μια εντολή που δημιουργεί ένα αρχείο ρυθμίσεων. Νομίζω ότι θα δημιουργήσω ένα αρχείο διαμόρφωσης χρησιμοποιώντας την εντολή "echo" στο περιβάλλον "cmd", αλλά πρέπει να ξεφύγει από τις αγκύλες με ένα circumflex. Εκείνοι. Για να δημιουργήσετε ένα αρχείο ρυθμίσεων, λαμβάνεται η ακόλουθη εντολή.

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

Αλλά πρέπει να τοποθετήσουμε αυτήν την εντολή σε XML, η οποία έχει τις δικές της απαιτήσεις για τη χρήση ειδικών χαρακτήρων:

ΕΙΔΙΚΟΣ ΧΑΡΑΚΤΗΡΑΣ
Ανταλλακτική αξία

>
&gt;

<
&lt;

&
&amp;

»
&apos;

"
&quot;

Ως αποτέλεσμα, για να δημιουργήσουμε ένα αρχείο διαμόρφωσης, λάβαμε την ακόλουθη εντολή για το "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;

Στη συνέχεια, εκτελούμε την εντολή χρησιμοποιώντας το αρχείο διαμόρφωσης.

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

Στη συνέχεια, διαγράψτε το αρχείο που δημιουργήσατε προηγουμένως και επανεκκινήστε το σύστημα. οι αλλαγές θα τεθούν σε ισχύ μετά από μια επανεκκίνηση.

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

Ως αποτέλεσμα, κατέληξα στο ακόλουθο αρχείο απαντήσεων για το 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>

Ας ελέγξουμε...

Ανεβάζουμε την εικόνα του συστήματος - Russified σε λειτουργία ελέγχου.

Αλλάζουμε το αρχείο Unattend.xml σε νέο, τρέχουμε το “Sysprep.bat”, επιλέγουμε το σημείο 2 και βλέπουμε τι έχουμε. Κατά την πρώτη εκκίνηση, η οθόνη καλωσορίσματος είναι στα Αγγλικά και το σύστημα επανεκκινείται. Η οθόνη καλωσορίσματος είναι στα ρωσικά, το multikiosk λειτουργεί.

Εάν έχετε οποιεσδήποτε ερωτήσεις σχετικά με τη ρύθμιση και την αδειοδότηση των Windows 10 IoT Enterprise, επικοινωνήστε με: [προστασία μέσω email] ή στον ιστότοπο quarta-embedded.ru.
Μπορείτε να βρείτε απαντήσεις σε ορισμένες ερωτήσεις στο το wiki μας ή στο δικό μας Κανάλι YouTube

Συγγραφέας του άρθρου: Vladimir Borisenkov, τεχνικός εμπειρογνώμονας στην Quarta Technologies.

Πηγή: www.habr.com