Windows 10 IoT Entreprise 2019 - Mode multikiosque

introduction

Windows 10 IdO Entreprise 2019 est le nom marketing de la prochaine version de Windows 10. La sortie de cette version a été annoncée en septembre 2018, respectivement, elle porte la version 1809, 18 est l'année, 09 est le mois. De nombreux articles ont été écrits sur la nouvelle version de Windows 10 1809, mais la plupart d'entre eux sont consacrés à divers « arcs », « beautés » et diverses fonctionnalités demandées à la maison.
Cet article ne traitera que des fonctionnalités qui peuvent être demandées par les fabricants d'appareils à usage fixe. À savoir sur les nouvelles capacités du mode « Kiosque ». Le sujet de la modification des noms des programmes de services pour les éditions Windows du segment entreprise sera également abordé.

Ancien schéma de service avec un nouveau nom

Permettez-moi de commencer par une brève explication : dans le segment entreprise des éditions Windows, il existe deux schémas de services selon lesquels Windows reçoit les mises à jour. Les diagrammes de service ont une désignation de lettre. Actuellement, les branches de service s'appellent LTSC et SAC.

LTSC signifie Canal de service à long terme (avec entretien à long terme). Auparavant, un tel canal s'appelait LTSB - Long Term Servicing Branch, Microsoft a simplement changé le nom du canal de service, le service lui-même est resté le même.

Microsoft a également changé le nom de la branche de service CBB - Current Branch for Business, désormais cette branche de service s'appelle SAC - Canal semi-annuel. Encore une fois, seul le nom a changé.

Mais il convient de mentionner que les branches de maintenance LTSC et SAC utilisent des distributions Windows différentes.

Un peu sur le nouveau mode kiosque chez SAC

Comme je l'ai déjà dit, LTSC et SAC ont des distributions différentes. LTSC ne dispose pas d'applications universelles standard ni de boutique d'applications, contrairement à SAC. En conséquence, LTSC n'a pas de navigateur Edge, contrairement à SAC. Si vous sélectionnez le navigateur Edge lors de la configuration d'un kiosque, alors deux modes sont désormais disponibles :

  1. En tant que panneau numérique ou affichage interactif
  2. Comme un navigateur public

Je ne m'étendrai pas sur la configuration de ces modes, car... La configuration est très simple et se fait dans une interface graphique. Créez simplement un utilisateur qui n'est pas membre du groupe Administrateurs, activez-lui le mode kiosque à l'aide de EDGE et voyez comment ces modes fonctionnent.

Kiosque avec de nombreuses applications

Certaines personnes pensent que l'utilisation sous licence Windows 10 IoT Entreprise implique le fonctionnement d’une seule application sur l’appareil, en fait ce n’est pas le cas. L'appareil doit être conçu pour effectuer une seule tâche professionnelle et l'utilisateur ne doit pas avoir accès à un ordinateur de bureau. Désormais, Microsoft lui-même a fourni l'outil permettant d'utiliser de nombreuses applications. Ce mode est appelé « kiosque multi-applications » ; ci-après, par souci de concision, je l'appellerai « multikiosque ». Dans cet article, nous examinerons la configuration de ce mode à l'aide du progiciel et certaines des fonctionnalités de ce mode.

Un peu sur le mode Multikiosk

Lorsque vous vous connectez à un compte utilisateur pour lequel le mode multi-kiosque est configuré, le système fonctionnera en mode tablette. Le menu Démarrer s'étendra en plein écran, affichant les vignettes d'application.

Liste des paramètres de base et des capacités du mode :

  1. Configuration pour plusieurs utilisateurs ou groupes
  2. Chaque utilisateur ou groupe peut se voir attribuer des paramètres individuels
  3. Capacité à utiliser des applications universelles et classiques
  4. La possibilité de lancer automatiquement l'une des applications lorsque l'utilisateur se connecte
  5. Applications sur liste blanche
  6. Accéder aux dossiers à l'aide d'une liste blanche

Il convient de prêter attention au point 5. Par défaut, seules les applications nécessaires au fonctionnement du système seront autorisées à fonctionner, d'autres applications doivent être ajoutées à la liste des applications autorisées. Ceux. Désormais, vous n'avez plus besoin de configurer AppLocker séparément. À propos, pour éviter les conflits avec les paramètres AppLocker, en mode multi-kiosque, toutes les règles AppLocker configurées ne s'appliqueront pas.

Le point 6 indique une bonne option, mais pour le moment, il est uniquement possible d'accorder une autorisation en écriture au dossier « Téléchargements ». Le mode vous permet d'utiliser des applications universelles et classiques. Tous les paramètres de mode sont spécifiés dans un fichier XML, dans lequel vous pouvez également spécifier les paramètres d'un seul kiosque d'application.

Essayons maintenant de tout configurer...

De quoi avons nous besoin...

  1. Tout d'abord, nous avons besoin du système lui-même, qui prend en charge le mode multikiosque. Ici vous pouvez télécharger version de démonstration
  2. Instructions pour configurer un multikiosque
  3. N'importe quel éditeur XML
  4. Pour appliquer les paramètres multikiosque :
    1. Pour la méthode n°1 - ICD, qui fait partie de l'ADK. ADK est possible скачать здесь
    2. Pour la méthode n°2 - l'utilitaire PsExec. L'utilitaire peut être скачать здесь

Il a dit : « Allons-y ! »

Je mènerai toutes les expériences sur la version commerciale de Windows 10 IoT Enterprise 1809 LTSC x32, et non sur une version de démonstration. Le système ne sera pas activé car le manque d'activation n'affecte pas la fonctionnalité du système. J'ai pris 32 bits uniquement parce que cela prend moins de place et qu'il sera plus rapide de travailler avec les images système.

Étape 1 – installation

L'installation de Win 10 IoT Enterprise n'est pas différente de l'installation de Win 10 Enterprise, je ne décrirai donc pas l'ensemble du processus d'installation, je ne parlerai que de certaines nuances.

Juste au cas où, permettez-moi de vous le rappeler, n'installez pas le système par-dessus celui installé. Lorsque le programme d'installation vous demande l'emplacement d'installation du système, supprimez toutes les partitions du futur disque système et spécifiez un disque non partitionné.

Nous installons le système sans connexion Internet afin que le système ne récupère rien d'inutile.

Parce que Nous allons créer des images de sauvegarde du système et pour cela nous le scellerons en mode audit, vous pourrez alors gagner du temps en chargeant le système en mode audit immédiatement après l'installation. Pour ce faire, lorsque le système vous demande de sélectionner une région « Commençons par la région. Est-ce vrai », appuyez simplement sur « Ctrl+Shift+F3 ».

Étape 2 - créer une image système

Parce que nous allons nous moquer du système et essayer divers nouveaux paramètres, il est possible que quelque chose se passe mal et nous devrons remettre le système à son état d'origine. Et pour revenir rapidement à son état d'origine, vous devez créer une image système. La seule chose que je ferai est de copier le « kit du gentleman » - le script et le fichier de réponses. Tous mes fichiers se trouvent dans le dossier « Sysprep », que je copie à la racine du disque système. Et bien sûr, je partagerai avec vous ce « gentleman’s set ».

Sysprep.bat – pour sceller le système.

@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

Une fois lancé, le script vérifiera la présence du compte « Admin » et en créera un s'il est manquant. Le compte sera ajouté au groupe Administrateurs.

Unattend.xml – fichier de réponses pour 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>

Lors du scellement en mode audit, le script ajoutera une commande au registre pour mettre fin au processus « sysprep.exe » afin de ne pas fermer manuellement la fenêtre sysprep à chaque fois. Lorsqu'il est scellé en mode bonjour, le script supprimera la commande de fermeture de la fenêtre du registre et modifiera lui-même la valeur de l'architecture dans le fichier de réponses par la valeur actuelle. Le fichier de réponses contient des paramètres pour démarrer le système sans interaction de l'utilisateur et une commande pour supprimer le dossier « Sysprep » à la racine du lecteur système.

Je vais maintenant sceller le système en mode audit à l'aide de « Sysprep.bat » et capturer une image du système. J'imagerai le système à l'aide de DISM et j'imagerai uniquement le volume du système. Si vous souhaitez créer une image uniquement du volume système, et non de l'intégralité du disque, n'oubliez pas de copier le contenu du répertoire « WindowsSystem32Recovery » sur le premier volume du dossier « RecoveryWindowsRE » après le déploiement du système. Cela devra être fait avant de charger le système d'exploitation. après le chargement du système d'exploitation, le répertoire « WindowsSystem32Recovery » sera déjà vide.

Étape 3 – Russification du système

Le pack de langue peut être installé sans connexion Internet si vous disposez de ce pack. Sinon, le système lui-même le téléchargera depuis Internet lorsque vous ajouterez la langue dans les paramètres. Vous n’avez tout simplement pas besoin de prendre le module linguistique des versions précédentes du système d’exploitation. Pour Windows 10 1809, il doit exister un module linguistique spécifiquement pour Windows 10 1809.

Microsoft suit son projet de transférer progressivement les paramètres du menu classique vers le nouveau, donc dans le panneau de configuration classique, vous ne trouverez plus les paramètres pour changer la langue et installer un pack de langue. Ces paramètres se trouvent désormais uniquement dans les paramètres système.

En mode audit, vous pouvez rencontrer un problème lors de l'ouverture des paramètres système à partir du menu Démarrer ; pour ouvrir les paramètres système, exécutez la commande - "ms-settings :", faites attention aux deux points à la fin de la commande, sans cela la commande ne fonctionne pas. Après avoir ouvert les paramètres du système une fois à l'aide de cette commande, il peut être ouvert à l'aide du menu graphique.

Mais dans les paramètres système, vous pouvez installer un pack de langue si le système est connecté à Internet, il n'y a pas d'option permettant de choisir d'installer un pack de langue à partir d'un fichier local.

Je ne décrirai pas le processus de localisation du système car... cela compliquera considérablement l'article, d'autant plus que le processus de localisation est détaillé décrit ici. Mais je voudrais attirer votre attention sur la particularité de changer la langue du système après avoir installé un pack de langue à l'aide de la console. Cette fonctionnalité est décrite dans le même wiki vers lequel j'ai fourni un lien plus tôt, dans la sous-section "Ajouter une langue à la liste des langues".

Je vais installer le pack de langue sans connexion Internet.

Après la localisation complète du système, assurez-vous de créer une image du système.

Étape 4 - Installez les applications nécessaires

Parce que Les systèmes LTSB et LTSC ne disposant pas de magasin d'applications, l'installation d'applications à partir du Microsoft Store entraîne certaines difficultés, notamment le téléchargement de l'application. Pour télécharger des applications, la société Adguard a réalisé un service très pratique - "Magasin Adguard", avec lequel vous pouvez obtenir des liens de téléchargement temporaires pour les applications et leurs composants.

Pour installer l'application, vous aurez besoin de fichiers avec les extensions « Appx » et « AppxBundle ». Avant d'installer l'application elle-même, vous devez installer ses composants. En règle générale, les composants d'une application peuvent être distingués intuitivement par le nom du fichier.

Afin de ne pas rendre l'article trop long, je ne décrirai pas en détail le processus d'installation des applications, d'autant plus qu'il existe des informations sur l'installation. instruction détaillée. Mais j'ajouterai une autre façon d'installer des applications sur votre compte actuel. Les applications peuvent être installées à l'aide du programme "Installateur d'application", mais pour installer des applications, vous aurez besoin d'une connexion Internet, mais les applications peuvent être installées en double-cliquant et vous n'aurez pas besoin de ses composants, tous les composants nécessaires seront téléchargés et installés "Installateur d'application".

Et petit rappel, lors de l'installation de l'application sur le compte courant, vous ne pourrez pas sceller le système. Comment installer des applications afin de pouvoir sceller le système, consultez les instructions ci-dessus. Et pour vérifier le fonctionnement du multikiosque, les applications existantes suffisent largement.

Étape 5 – création d'un fichier de configuration pour le multikiosque

Passons maintenant à la partie la plus intéressante : la configuration du mode kiosque. Regardons instruction selon les paramètres que nous voyons. Tout d'abord, nous devrons créer un fichier de configuration XML, dont un exemple complet peut être trouvé ici. voir ici.

Commençons par configurer la disposition des tuiles. Le moyen le plus simple de créer une configuration de personnalisation de vignettes XML est exporter leur état actuel.

Tout d'abord, ajoutons des vignettes des applications dont nous avons besoin au menu Démarrer. Appelez la recherche « Win+s », recherchez l'application souhaitée, faites un clic droit dessus et sélectionnez « Épingler à l'écran de démarrage ».

J'ai épinglé les applications suivantes :

  • Bloc-notes
  • Calculatrice
  • Internet Explorer
  • Peinture
  • WordPad
  • Paramètres
  • еопасность Windows

Les deux dernières candidatures ont été épinglées car... Il n'y a tout simplement aucune autre application universelle dans le package LTSC standard. Notez que les vignettes du bureau sont liées à des raccourcis. Maintenant, en déplaçant les vignettes directement dans le menu Démarrer, je vais séparer les vignettes épinglées en deux groupes. Pour créer un nouveau groupe de vignettes, faites glisser une vignette nettement plus haute ou plus basse que les autres vignettes, ce qui mettra en évidence un séparateur intuitif. Vous pouvez nommer les groupes à votre guise ; pour cela, placez le curseur de la souris au-dessus du groupe, et lorsque l'inscription « Nommer le groupe » apparaît, cliquez sur le bouton gauche de la souris. J'appellerai le premier groupe « Paramètres », il comprendra les vignettes « Paramètres » et « Sécurité Windows ». J'appellerai le deuxième groupe « Applications Office », qui comprendra toutes les autres tuiles. À propos, vous pouvez déplacer des groupes entiers de tuiles en les faisant glisser à l'aide des deux bandes situées en haut à droite du nom du groupe.

Parce que Sur la vignette « Sécurité Windows », le nom ne rentre pas complètement, je vais changer sa taille en « Large ». Pour modifier la taille d'une vignette, faites un clic droit sur la vignette et sélectionnez « Redimensionner ».

Après la configuration, nous exportons l'état actuel et exécutons la commande dans l'environnement PowerShell – ​​​​« Export-StartLayout – chemin C:SysprepStartLayout.xml ».

Ensuite, le plus simple n'est pas de créer vous-même le fichier de paramètres, mais prenez un exemple de fichier d'ici paramètres – cliquez sur le bouton « Copier », collez le contenu dans le bloc-notes et enregistrez-le sous « MultiAppKiosk.xml ». Maintenant, nous modifions les paramètres par les nôtres. Pour modifier les paramètres des vignettes attachées, copiez l'intégralité du bloc « StartLayoutCollection » de « StartLayout.xml » vers « MultiAppKiosk.xml ». Pour ajouter des applications à celles autorisées, vous devez insérer les identifiants universels d'application dans la section « AllowedApps » et dans le même bloc ajouter le chemin complet aux fichiers exécutables des applications classiques, qui est spécifié dans les propriétés des raccourcis vers lesquels le les tuiles font référence. Pour accéder rapidement à un raccourci, cliquez avec le bouton droit sur une vignette épinglée et accédez à Plus > Aller à l'emplacement du fichier. Notez que le paramètre « AppUserModelId » est utilisé pour spécifier l'ID d'application universel et que le paramètre « DesktopAppPath » est utilisé pour spécifier le chemin d'accès complet à l'application de bureau. Et encore une petite nuance, si vous envisagez d'utiliser IE sur un système x64, alors dans la liste des applications autorisées, vous devez spécifier deux chemins pour le fichier exécutable « Program FilesInternet Exploreriexplore.exe » et « Program Files (x86)Internet Exploreriexplore. exe".

Je ne donnerai pas accès aux dossiers, je supprime donc la section « FileExplorerNamespaceRestrictions ».

Afficher la barre des tâches ne me dérange pas, je laisse donc tout tel quel dans la section « Barre des tâches ».

Dans l'exemple, deux profils sont spécifiés, mais je n'aurai qu'un seul profil, donc la section avec le deuxième profil pourra être supprimée. Avant de désinstaller, faites attention à l'exemple de démarrage automatique d'une application avec des arguments.

Dans la section « Configurations », les comptes sont liés aux profils ; veuillez noter que plusieurs comptes peuvent être liés à un seul profil. Mais parce que Je ne suis intéressé que par un seul compte, puis je supprimerai toutes les liaisons sauf la première - les blocs « Config ». Dans la liaison restante, j'écrirai le nom d'utilisateur « Utilisateur ».

J'ai ce fichier avec les paramètres

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>

Lorsque vous créez vos fichiers de configuration XML, n'oubliez pas que chaque profil doit avoir un identifiant unique, et pas seulement au sein d'un seul fichier XML, mais au sein d'un seul OS. Ceux. Idéalement, pour éviter toute confusion, vous pouvez créer un nouvel identifiant à chaque fois ; cela peut être fait dans l'environnement PowerShell à l'aide de la commande « [guid]::NewGuid() ». Et assurez-vous d'enregistrer le fichier en codage « UTF-8 » ; si le fichier est enregistré en codage « ANSI », alors lors de la construction du package de préparation, vous recevrez une erreur si le fichier XML contient du cyrillique.

Étape 6 – application des paramètres multikiosque

Examinons deux façons d'appliquer les paramètres décrits dans le fichier de configuration. La première consiste à utiliser un package de provisionnement, qui doit être créé dans ICD. Pour certains, cette méthode sera peut-être plus familière. La seconde utilise le « MDM Bridge WMI Provider », cette méthode m'a semblé plus pratique.

Méthode # 1

Qui n'a pas de DCI ? télécharger ADK et installer. L'installation d'ADK est très simple : l'ensemble des composants peut être laissé par défaut.

Lancez ICD, cliquez sur la vignette « Préparation avancée », précisez le nom et le dossier du projet et cliquez sur « Suivant ». Dans la fenêtre suivante, sélectionnez « Toutes les éditions du bureau Windows » et cliquez sur « Suivant ». Vous pouvez ignorer l'importation du package de préparation ; cliquez sur « Terminer ».

Développez le menu déroulant « Paramètres d'exécution », puis développez le sous-menu « AssignedAccess » et sélectionnez « MultiAppAssignedAccessSettings ». En haut de la section centrale de la fenêtre ICD, cliquez sur le bouton « Parcourir » et indiquez l'emplacement du fichier XML avec les paramètres. Au cas où, vous pouvez enregistrer le projet en appuyant sur « Ctrl+s ». Dans la partie supérieure gauche de l'ICD, sélectionnez « Exporter » et sélectionnez « Provisioning Package » dans le menu déroulant. En tant que propriétaire, sélectionnez « Administrateur informatique » ; toutes les autres questions peuvent être ignorées en cliquant sur « Suivant » et à la fin, cliquez sur « Construire » et « Terminer ».

Dans le système installé, n'oubliez pas de créer un utilisateur « Utilisateur » ; il ne peut pas être ajouté au groupe « Administrateurs », sinon le multikiosque ne fonctionnera pas. J'ai créé un utilisateur dans Gestion de l'ordinateur avec un mot de passe qui n'expire jamais.

Nous exécutons maintenant le package de préparation sur le système précédemment installé. Après avoir appliqué le package de préparation, le menu Démarrer et le menu de l'administrateur changeront. Dans la colonne de démarrage de gauche, les boutons doivent disparaître : « Documents », « Image », « Options ». Si le menu Démarrer n'a pas changé, quelque chose ne va pas. Un package installé peut être supprimé en ouvrant la fenêtre Paramètres > Comptes > Accès au compte professionnel ou scolaire > Ajouter ou supprimer un package de provisionnement.

Si le menu Démarrer a changé, les paramètres sont appliqués au système, connectez-vous en tant qu'utilisateur pour lequel le multikiosque est configuré et regardez le résultat.

Méthode # 2

Application des paramètres à l'aide du « Fournisseur WMI MDM Bridge » décrit ici. La commodité de cette méthode réside dans sa flexibilité d'utilisation et sa capacité à s'affranchir de nombreuses opérations manuelles nécessaires à la création d'un package de préparation. Ici, chacun peut prendre la décision qui lui convient. J'ai fait quelques scripts pour moi-même.

MiltiKiosk.bat – script de lancement

@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 – script principal

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

Si vous souhaitez utiliser ma solution, enregistrez les scripts ci-dessus avec leurs noms d'origine dans un dossier et placez le fichier « PsExec.exe » dans le même dossier. Dans le même dossier, créez un dossier « XML » et copiez-y les fichiers XML pour configurer le multikiosque. J'utiliserai le même fichier que dans la première méthode.

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>

Un peu sur les fonctionnalités du script. Le script est conçu pour utiliser des fichiers XML avec un encodage « UTF8 » ; si vous souhaitez utiliser un encodage « ANSI », supprimez le paramètre « encodage UTF8 » de l'option de lecture du fichier. Vous devez placer les fichiers XML dans le dossier « XML » sans remplacer les caractères ; le script lui-même remplacera les caractères spéciaux par les désignations appropriées. Afin de ne pas vous tromper dans les GUID de liaison des utilisateurs aux profils, vous pouvez simplement indiquer le numéro ou le nom de l'utilisateur entre accolades ; tout le contenu entre accolades sera remplacé par des GUID.

L'utilisation du script est très simple, il suffit de l'exécuter et de sélectionner l'élément requis. Pour remplacer la configuration actuelle par une nouvelle, il n'est pas nécessaire de supprimer la configuration actuelle ; elle sera écrasée. N'oubliez pas de créer les utilisateurs spécifiés dans le fichier de configuration.

Lors de la visualisation de la configuration multikiosque actuelle dans la même session dans laquelle elle a été appliquée, au lieu de caractères spéciaux, des combinaisons de caractères de remplacement seront affichées. Après avoir changé de session (redémarrage du script), tous les caractères spéciaux seront affichés sous leur forme originale.

Étape 7 - Scellement du système

Le multikiosque fonctionne, enfin c'est tout, semble-t-il...

Si tout se passe comme prévu, c’est que vous ne remarquez rien.

N'oubliez pas que nous devons encore passer le système du mode audit au mode bienvenue. Bon, on est prêts pour ça, on lance « Sysprep.bat », on sélectionne le point 2, le système est scellé. Nous allumons l'appareil, le système démarre, nous nous connectons au compte utilisateur pour lequel le multikiosque est configuré, mais nous ne pouvons pas nous connecter. Après le message « Bienvenue », le message « Déconnexion » apparaît.

Au début, je voulais décrire uniquement la solution au problème, mais plus tard j'ai décidé de décrire les étapes pour identifier le problème et trouver la solution la plus simple car... De nombreux lecteurs seront sûrement tourmentés par de vagues doutes - "Et si c'était comme ça...". Je pense que décrire les différentes expériences vous fera gagner un temps non négligeable si vous souhaitez trouver une autre solution. Pour rendre les informations aussi précises que possible et pour m'assurer encore une fois qu'il n'y a pas d'erreurs, je décrirai les expériences au format « réalisées et enregistrées ». Ceux. Je referai les expériences décrites.

expériences

Qu'avons-nous fait? Il y a deux comptes dans le système :

« Administrateur » – dans le groupe « Administrateurs »
« Utilisateur » – dans le groupe « Utilisateurs »
En mode audit, le multikiosque fonctionnait, mais une fois scellé, il ne fonctionnait pas.

expérience 1

Nous supprimons le package de préparation installé, dans le composant logiciel enfichable "Gestion de l'ordinateur", nous supprimons l'utilisateur "Utilisateur" et créons un nouvel utilisateur avec le nom "Utilisateur", appliquons le package de préparation, allons au compte "Utilisateur" - c'est le cas ne fonctionne pas. Nous allons sous le nom "Admin", supprimons l'utilisateur "Utilisateur" du groupe "Utilisateurs", l'ajoutons au groupe "Administrateurs", passons sous le nom "Utilisateur" - cela ne fonctionne pas. Nous nous connectons sous le nom « Admin », supprimons le package de préparation avec le multikiosque, nous nous connectons sous le nom « Utilisateur » - nous avons réussi à nous connecter, mais bien sûr le mode multikiosque ne fonctionne pas car Le package de provisionnement a été supprimé.

expérience 2

Nous téléchargeons l'image système - russifiée en mode audit.

Le système d'exploitation est chargé, appuyez sur « Win+r », car Notre fenêtre sysprep s'est fermée automatiquement, exécutez la commande « sysprep » et exécutez « sysprep » dans la fenêtre qui s'ouvre. Paramètres Sysprep dans la fenêtre : « Aller à la fenêtre d'accueil du système (OOBE) », « Préparation à l'utilisation », « Redémarrer ». Cliquez sur « OK » et attendez le message d'accueil du système d'exploitation. Nous répondons aux questions au premier démarrage du système : « Continuer dans la langue sélectionnée ? » - "Russe" ; région – Russie ; disposition du clavier – russe ; ajoutez une deuxième disposition de clavier - ignorez ; « Connectons-nous au réseau » – « Passer pour l'instant » ; connectez-vous à Internet - non ; contrat de licence - accepter ; « Qui utilisera cet ordinateur » – « Test » ; créer un mot de passe - laissez le champ vide ; Fonctionnement pratique sur différents appareils – non ; Paramètres de confidentialité – accepter. Le système d'exploitation est chargé, dans le composant logiciel enfichable « Gestion de l'ordinateur », nous créons un utilisateur avec le nom « Utilisateur », ajoutons le package de préparation. Le résultat est que ça ne marche pas.

expérience 3

Nous téléchargeons l'image système - russifiée en mode audit.

Le système d'exploitation est chargé, connectez le système à Internet, exécutez la commande « gpedit.msc » et dans la section « Windows Update », activez l'option « Activer les mises à jour recommandées via les mises à jour automatiques », redémarrez au cas où. Dans le centre de mise à jour, cliquez sur « Rechercher les mises à jour » et redémarrez jusqu'à ce que toutes les mises à jour soient installées. Déconnectez le système d'Internet. Nous lançons « sysprep » en mode graphique et répétons toutes les étapes décrites à l'étape précédente depuis l'exécution de l'utilitaire « sysprep » jusqu'à l'ajout du package de préparation. Le résultat est que ça ne marche pas.

expérience 4

Nous téléchargeons l'image système - anglais en mode audit.

Nous lançons « sysprep » en mode graphique, scellons l'OS avec les mêmes paramètres que lors de l'expérience 2. Au premier démarrage du système, nous sélectionnons les mêmes paramètres que dans l'expérience 2, à l'exception des paramètres régionaux et linguistiques car Il n'y a pas de langue russe. De la même manière, créez un utilisateur « User » et ajoutez un package de provisionnement. Le résultat est que cela fonctionne. Ceux. Le problème est lié à la localisation.

expérience 5

Nous téléchargeons l'image système - russifiée en mode audit.

Dans le snap-in « Gestion de l'ordinateur », créez un utilisateur « Utilisateur », ajoutez un package de préparation, allez dans le compte « Utilisateur », le multi-kiosque fonctionne.

Déconnectez-vous de votre compte et connectez-vous sous le compte « Admin ». Nous lançons PowerShell avec les droits d'administrateur, exécutons la commande « Dism /online /Get-Intl » et voyons « Langue de l'interface utilisateur par défaut : en-US ».

Nous démarrons à partir du lecteur flash dans WinPE, le système d'exploitation déployé est sur mon lecteur E. Nous exécutons la commande « Dism /image:E: /Set-UILang:ru-ru ». Nous regardons le résultat, exécutons « Dism /image:E: /Get-Intl » et voyons « Langue de l'interface utilisateur du système par défaut : ru-RU ».

Nous démarrons le système, nous connectons au compte « Utilisateur », le multikiosque ne fonctionne pas.

Pour établir clairement la relation de cause à effet du problème, essayons à nouveau de faire en sorte que le multi-kiosque fonctionne et ne fonctionne pas.

Nous démarrons à partir du lecteur flash dans WinPE, le système d'exploitation déployé est sur mon lecteur E. Nous exécutons la commande « Dism /image:E: /Set-UILang:en-us ». Nous regardons le résultat, exécutons « Dism /image:E: /Get-Intl » et voyons « Langue de l'interface utilisateur du système par défaut : en-US ».

Nous démarrons le système, nous connectons au compte « Utilisateur », le multikiosque fonctionne.

Nous démarrons à partir du lecteur flash dans WinPE, le système d'exploitation déployé est sur mon lecteur E. Nous exécutons la commande « Dism /image:E: /Set-UILang:ru-ru ». Nous regardons le résultat, exécutons « Dism /image:E: /Get-Intl » et voyons « Langue de l'interface utilisateur du système par défaut : ru-RU ».

Nous démarrons le système, nous connectons au compte « Utilisateur », le multikiosque ne fonctionne pas.

Ceux. vous pouvez constater une nette dépendance des performances du kiosque à la langue par défaut de l’interface utilisateur. Peut-être y a-t-il d'autres facteurs qui affectent les performances du multikiosque ?

expérience 6

Pour la pureté de l'expérience, nous remplissons le système. Nous téléchargeons l'image système - russifiée en mode audit.

Nous lançons « sysprep » en mode graphique, scellons l'OS avec les mêmes paramètres que lors de l'expérience 2. Nous attendons que l'OS nous accueille et réponde aux questions : « Continuer dans la langue sélectionnée ? - "États Unis Anglais)"; région – Russie ; Disposition du clavier – russe. De plus, tous les paramètres ont été sélectionnés comme dans l’expérience 2.

Examinons les paramètres de langue par défaut de l'interface utilisateur. Nous exécutons la commande « Dism /online /Get-Intl » et voyons « Langue de l'interface utilisateur du système par défaut : en-US ». Dans le snap-in « Gestion de l'ordinateur », créez un utilisateur « Utilisateur », ajoutez un package de préparation, allez dans le compte « Utilisateur », le multi-kiosque fonctionne.

Nous essayons de casser le kiosque en changeant la langue de l'interface utilisateur par défaut. Nous entrons dans l'utilisateur « Test », qui a été créé lors du premier démarrage du système et activons la connexion automatique pour celui-ci afin que le système ne démarre pas immédiatement dans le compte « Utilisateur ». Exécutez « netplwiz », sélectionnez l'utilisateur « Test », décochez la case « Exiger le nom d'utilisateur et le mot de passe » et appliquez les paramètres.

Démarrez à partir d’un lecteur flash dans WinPE. Exécutez la commande « Dism /image:E: /Set-UILang:ru-ru ». Nous regardons le résultat, exécutons « Dism /image:E: /Get-Intl » et voyons « Langue de l'interface utilisateur du système par défaut : ru-RU ».

Nous démarrons le système, essayons de nous connecter au compte « Utilisateur », le multikiosque fonctionne. Ceux. il ne peut pas être brisé. Est-il possible de le faire fonctionner de cette façon ?

expérience 7

Nous téléchargeons l'image système - russifiée en mode audit.

Nous lançons « Sysprep.bat », sélectionnons le point 2. Nous démarrons le système, créons l'utilisateur « Utilisateur » dans le snap-in « Gestion de l'ordinateur », ajoutons le package de préparation, allons sur le compte « Utilisateur », le multi- le kiosque ne fonctionne pas.

Démarrez à partir d’un lecteur flash dans WinPE. Exécutez la commande « Dism /image:E: /Set-UILang:en-us ». Nous regardons le résultat, exécutons « Dism /image:E: /Get-Intl » et voyons « Langue de l'interface utilisateur du système par défaut : en-US ».

Nous démarrons le système, essayons de nous connecter au compte « Utilisateur », le multikiosque ne fonctionne pas.

Il s'avère qu'en modifiant le paramètre de langue par défaut de l'interface utilisateur, vous pouvez affecter les performances du multikiosque uniquement lorsque le système est en mode audit ou au premier démarrage après avoir scellé le système. Cela signifie que vous devrez sceller le système avec un fichier de réponses dans lequel la langue du système sera sélectionnée en anglais, puis modifier les paramètres du système pour que l'interface soit le russe. Ce n'est pas une très bonne solution. Peut-être que le problème peut être résolu en installant un module linguistique ou en installant des modules linguistiques supplémentaires ?

expérience 8

Nous téléchargeons l'image système - anglais en mode audit.

Nous nous connectons à Internet, dans les paramètres système, allez dans la section "Langue", sélectionnez "Ajouter une langue", sélectionnez la langue "Russe", cliquez sur "Suivant", laissez les paramètres d'installation par défaut, cliquez sur "Installer", après l'installation le pack de langue nous redémarrons le système, maintenant en russifié. Déconnectez le système d'Internet, exécutez « Sysprep.bat », sélectionnez le point 2.

Après avoir chargé le système, dans le snap-in « Gestion de l'ordinateur », créez l'utilisateur « Utilisateur », ajoutez le package de préparation, accédez au compte « Utilisateur », le multikiosque ne fonctionne pas.

expérience 9

Essayons de russifier le système avant l'installation, en mode hors ligne. Parallèlement, il y aura un court programme éducatif sur la localisation de la distribution.

Je prends une clé USB avec une distribution originale propre - X21-96381. Ce sera le lecteur "E". Pour monter des images, je crée des dossiers : « c:MountInstall », « c:MountWinre », « c:MountBoot ». Je prends un ensemble de packages de localisation - X21-87814. Et dans le dossier « c:Mount », j'en copie les packages : « Microsoft-Windows-Client-Language-Pack_x86_ru-ru.cab », « lp.cab », « WinPE-Setup_ru-ru.cab ». Je lance la console avec les droits d'administrateur. Je pense que d'autres commandes seront claires sans commentaire.

Commandes de localisation

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

Nous démarrons à partir du lecteur flash, sélectionnons la langue russe et installons le système sur un disque vierge. Lorsque le système vous demande de sélectionner une région, appuyez sur « Ctrl+Shift+F3 ». Dans le snap-in « Gestion de l'ordinateur », créez un utilisateur « Utilisateur », ajoutez un package de préparation, allez dans le compte « Utilisateur », le multi-kiosque ne fonctionne pas.

Démarrez à partir d’un lecteur flash dans WinPE. Exécutez la commande « Dism /image:E: /Set-UILang:en-us ».

Nous démarrons le système, essayons de nous connecter au compte « Utilisateur », le multikiosque fonctionne.

Apparemment, le problème ne vient pas des méthodes d'ajout d'un package, essayons d'ajouter des packages supplémentaires.

expérience 10

Nous prenons la clé USB que nous avons préparée à l'étape précédente.

Nous prenons le package « Feat on Demand » – X21-87815. J'en copie les packages dans le dossier « 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».

Lancez la console avec les droits d'administrateur et exécutez les commandes :

Команды

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

Nous démarrons à partir du lecteur flash, sélectionnons la langue russe et installons le système sur un disque vierge. Lorsque le système vous demande de sélectionner une région, appuyez sur « Ctrl+Shift+F3 ». Dans le composant logiciel enfichable « Gestion de l'ordinateur », créez l'utilisateur « Utilisateur », ajoutez le package de provisionnement et connectez-vous au compte « Utilisateur ». J'ai eu un écran noir qui s'est bloqué pendant un long moment, j'ai donc redémarré le système à chaud.

Nous supprimons le package de préparation, nous connectons en tant que « Utilisateur », redémarrons le système, ajoutons le package de préparation, le multikiosque ne fonctionne pas.

Démarrez à partir d’un lecteur flash dans WinPE. Exécutez la commande « Dism /image:E: /Set-UILang:en-us ».

Nous démarrons le système, essayons de nous connecter au compte « Utilisateur », le multikiosque fonctionne.

solution de contournement

Des héros normaux. Ils font toujours un détour !

Diverses méthodes d'installation des packs de localisation n'ont pas résolu le problème, ce qui signifie que vous devrez installer la langue « en-us » au premier démarrage après le scellement et modifier les paramètres de langue après le premier démarrage.

Nous téléchargeons l'image système - russifiée en mode audit.

Dans le fichier « Unattend.xml », entrez « en-US » dans le paramètre, exécutez « Sysprep.bat », sélectionnez le point 2 et voyez ce que nous avons obtenu. L'écran d'accueil est en anglais, le multi-kiosque fonctionne. Cela signifie que vous devez ajouter une commande à « Unattend.xml » pour changer la langue du message d'accueil. Et pour ce faire, vous devez exécuter la commande « control intl.cpl,, /f: » en indiquant le fichier de configuration, qui précisera la copie des paramètres actuels sur l'écran d'accueil. Le contenu du fichier de configuration ressemblera à ceci.

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

Parce que copiera les paramètres de l'utilisateur actuel, puis la commande devra être exécutée une fois que l'utilisateur se sera connecté, ce qui signifie que nous en aurons besoin. Il y a un petit « mais », l’exécution aura lieu après la connexion d’un utilisateur disposant de droits d’administrateur. Et je ne voudrais pas créer un fichier supplémentaire qui serait nécessaire au bon fonctionnement de la commande. Il est préférable d'implémenter l'intégralité de la solution dans un seul fichier - « Unattend.xml ». Pour ce faire, il vous suffira d'exécuter une commande qui crée un fichier de configuration. Je pense que je vais créer un fichier de configuration en utilisant la commande "echo" dans l'environnement "cmd", mais il doit échapper aux crochets angulaires avec un circonflexe. Ceux. Pour créer un fichier de configuration, la commande suivante est obtenue.

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

Mais nous devons placer cette commande en XML, qui a ses propres exigences pour l'utilisation de caractères spéciaux :

Caractère spécial
Valeur de remplacement

>
&gt;

<
&lt;

&
&amp;

»
&apos;

"
&quot;

En conséquence, pour créer un fichier de configuration, nous avons obtenu la commande suivante pour « 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;

Ensuite, nous exécutons la commande à l'aide du fichier de configuration.

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

Ensuite, supprimez le fichier précédemment créé et redémarrez le système. les modifications prendront effet après un redémarrage.

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

En conséquence, je me suis retrouvé avec le fichier de réponses suivant pour 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>

Allons vérifier...

Nous téléchargeons l'image système - russifiée en mode audit.

Nous remplaçons le fichier Unattend.xml par un nouveau, exécutons « Sysprep.bat », sélectionnons le point 2 et voyons ce que nous avons obtenu. Lorsque vous démarrez pour la première fois, l'écran de bienvenue est en anglais et le système redémarre. L'écran d'accueil est en russe, le multikiosque fonctionne.

Si vous avez des questions sur la configuration et la licence de Windows 10 IoT Enterprise, veuillez contacter : [email protected] ou sur le site Internet quarta-embedded.ru.
Vous pouvez trouver des réponses à certaines questions dans notre wiki ou sur le nôtre Chaîne YouTube

Auteur de l'article : Vladimir Borisenkov, expert technique chez Quarta Technologies.

Source: habr.com