Windows 10 IoT Enterprise 2019 - mode multi-kios

pengenalan

Windows 10 IoT Perusahaan 2019 adalah nama pemasaran untuk rilis berikutnya Windows 10. Rilis versi ini diumumkan pada bulan September 2018, masing-masing memiliki versi 1809, 18 adalah tahun, 09 adalah bulan. Banyak artikel telah ditulis tentang rilis baru Windows 10 1809, tetapi kebanyakan dari mereka dikhususkan untuk berbagai “busur”, “keindahan” dan berbagai fungsi yang dibutuhkan di rumah.
Artikel ini hanya akan membahas fungsionalitas yang mungkin dibutuhkan oleh produsen perangkat tujuan tetap. Yakni soal kemampuan baru mode “Kiosk”. Topik perubahan nama skema layanan untuk edisi Windows segmen perusahaan juga akan disinggung.

Skema layanan lama dengan nama baru

Mari saya mulai dengan penjelasan singkat: di segmen korporat edisi Windows, ada dua skema layanan yang menurutnya Windows menerima pembaruan. Diagram layanan memiliki sebutan huruf. Saat ini cabang layanan disebut LTSC dan SAC.

LTSC adalah singkatan Saluran Pelayanan Jangka Panjang (dengan pemeliharaan jangka panjang). Sebelumnya, saluran seperti itu disebut LTSB - Cabang Pelayanan Jangka Panjang, Microsoft hanya mengubah nama saluran layanan, layanannya sendiri tetap sama.

Microsoft juga mengubah nama cabang layanan CBB - Cabang Saat Ini untuk Bisnis, sekarang cabang layanan ini disebut SAC - Kanal Semi Tahunan. Sekali lagi, hanya namanya saja yang berubah.

Namun perlu disebutkan bahwa cabang layanan LTSC dan SAC menggunakan distribusi Windows yang berbeda.

Sedikit tentang mode kios baru di SAC

Seperti yang sudah saya katakan, LTSC dan SAC memiliki distribusi yang berbeda. LTSC tidak memiliki aplikasi universal standar atau toko aplikasi, tetapi SAC memilikinya. Oleh karena itu, LTSC tidak memiliki browser Edge, tetapi SAC memilikinya. Jika Anda memilih browser Edge saat menyiapkan kios, kini tersedia dua mode:

  1. Sebagai tanda digital atau tampilan interaktif
  2. Seperti browser publik

Saya tidak akan memikirkan pengaturan mode ini, karena... Penyiapannya sangat sederhana dan dilakukan dalam antarmuka grafis. Buat saja pengguna yang bukan anggota grup Administrator, aktifkan mode kios untuknya menggunakan EDGE dan lihat cara kerja mode ini.

Kios dengan banyak aplikasi

Beberapa orang berpikir bahwa penggunaan berlisensi Windows 10 IoT Perusahaan menyiratkan pengoperasian hanya satu aplikasi pada perangkat, pada kenyataannya tidak demikian. Perangkat harus dirancang untuk melakukan satu tugas bisnis dan pengguna tidak boleh memiliki akses ke desktop. Kini Microsoft sendiri telah memberikan alat untuk menggunakan banyak aplikasi. Mode ini disebut “kios multi-aplikasi”; selanjutnya, untuk singkatnya, saya akan menyebutnya “multikios”. Pada artikel ini kita akan melihat pengaturan mode ini menggunakan paket perangkat lunak dan beberapa fitur mode ini.

Sedikit tentang mode Multikios

Saat Anda masuk ke akun pengguna yang mode multi-kiosnya dikonfigurasi, sistem akan bekerja dalam mode tablet. Menu Mulai akan diperluas ke layar penuh, menampilkan ubin aplikasi.

Daftar pengaturan dasar dan kemampuan mode:

  1. Menyiapkan untuk banyak pengguna atau grup
  2. Setiap pengguna atau grup dapat diberi pengaturan individual
  3. Kemampuan untuk menggunakan aplikasi universal dan klasik
  4. Kemampuan untuk meluncurkan salah satu aplikasi secara otomatis saat pengguna login
  5. Aplikasi yang masuk daftar putih
  6. Mengakses folder menggunakan daftar putih

Perlu memperhatikan poin 5. Secara default, hanya aplikasi yang diperlukan agar sistem dapat berfungsi yang diizinkan untuk bekerja, aplikasi lain harus ditambahkan ke daftar aplikasi yang diizinkan. Itu. Sekarang Anda tidak perlu mengkonfigurasi AppLocker secara terpisah. Omong-omong, untuk menghindari konflik dengan pengaturan AppLocker, dalam mode multi-kios, semua aturan AppLocker yang dikonfigurasi tidak akan berlaku.

Poin 6 menunjukkan pilihan yang baik, tetapi saat ini hanya mungkin untuk memberikan izin menulis ke folder “Unduhan”. Mode ini memungkinkan Anda menggunakan aplikasi universal dan klasik. Semua pengaturan mode ditentukan dalam file XML, di mana Anda juga dapat menentukan pengaturan untuk satu kios aplikasi.

Sekarang mari kita coba mengatur semuanya...

Apa yang kita butuhkan...

  1. Pertama-tama, kita memerlukan sistem itu sendiri, yang mendukung mode multikios. Di sini Anda dapat mengunduh versi demo
  2. Petunjuk untuk menyiapkan multikios
  3. Editor XML apa pun
  4. Untuk menerapkan pengaturan multikios:
    1. Untuk metode No. 1 - ICD, yang merupakan bagian dari ADK. ADK dimungkinkan unduh di sini
    2. Untuk metode No. 2 - utilitas PsExec. Utilitasnya bisa unduh di sini

Dia berkata - “Ayo pergi!”

Saya akan melakukan semua eksperimen pada versi komersial Windows 10 IoT Enterprise 1809 LTSC x32, bukan versi demo. Sistem tidak akan diaktifkan karena kurangnya aktivasi tidak mempengaruhi fungsionalitas sistem. Saya mengambil 32 bit hanya karena memakan lebih sedikit ruang dan akan lebih cepat bekerja dengan image sistem.

Langkah 1 – instalasi

Menginstal Win 10 IoT Enterprise tidak berbeda dengan menginstal Win 10 Enterprise, jadi saya tidak akan menjelaskan keseluruhan proses instalasi, saya hanya akan membahas beberapa nuansanya.

Untuk berjaga-jaga, izinkan saya mengingatkan Anda, jangan menginstal sistem di atas sistem yang diinstal. Ketika penginstal bertanya tentang lokasi instalasi sistem, hapus semua partisi pada disk sistem yang akan datang dan tentukan disk yang tidak dipartisi.

Kami menginstal sistem tanpa koneksi Internet sehingga sistem tidak menarik sesuatu yang tidak perlu.

Karena Kami akan membuat gambar cadangan sistem dan untuk ini kami akan menyegelnya dalam mode audit, kemudian Anda dapat menghemat waktu dengan mem-boot sistem dalam mode audit segera setelah instalasi. Untuk melakukan ini, ketika sistem meminta Anda untuk memilih suatu wilayah, “Mari kita mulai dengan wilayah. Apakah ini benar" cukup tekan "Ctrl+Shift+F3".

Langkah 2 - buat image sistem

Karena kita akan mengejek sistem dan mencoba berbagai pengaturan baru, mungkin ada yang tidak beres dan kita perlu mengembalikan sistem ke keadaan semula. Dan untuk segera kembali ke keadaan semula, Anda perlu membuat image sistem. Satu-satunya hal yang akan saya lakukan adalah menyalin "gentleman's kit" - skrip dan file jawabannya. Semua file saya terletak di folder “Sysprep”, yang saya salin ke root disk sistem. Dan tentu saja, saya akan membagikan “set pria” ini kepada Anda.

Sysprep.bat – untuk menyegel sistem.

@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

Saat diluncurkan, skrip akan memeriksa keberadaan akun “Admin” dan membuat akun jika tidak ada. Akun akan ditambahkan ke grup Administrator.

Unattend.xml – file respons untuk 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>

Saat menyegel dalam mode audit, skrip akan menambahkan perintah ke registri untuk mengakhiri proses “sysprep.exe” agar tidak menutup jendela sysprep secara manual setiap saat. Ketika disegel dalam mode hello, skrip akan menghapus perintah untuk menutup jendela dari registri dan dengan sendirinya akan mengubah nilai arsitektur di file jawaban ke yang sekarang. File jawaban berisi parameter untuk mem-boot sistem tanpa interaksi pengguna dan perintah untuk menghapus folder “Sysprep” di root drive sistem.

Sekarang saya akan menyegel sistem dalam mode audit menggunakan “Sysprep.bat” dan mengambil gambar sistem. Saya akan menggambarkan sistem menggunakan DISM dan hanya akan menggambarkan volume sistem. Jika Anda hanya ingin menggambarkan volume sistem, dan bukan seluruh disk, maka jangan lupa untuk menyalin isi direktori “WindowsSystem32Recovery” ke volume pertama ke dalam folder “RecoveryWindowsRE” setelah menerapkan sistem. Ini perlu dilakukan sebelum memuat OS. setelah memuat OS, direktori “WindowsSystem32Recovery” sudah kosong.

Langkah 3 – Russifikasi sistem

Paket bahasa dapat diinstal tanpa koneksi Internet jika Anda memiliki paket ini. Jika tidak, sistem akan mengunduhnya sendiri dari Internet saat Anda menambahkan bahasa di pengaturan. Hanya saja tidak perlu mengambil paket bahasa dari OS versi sebelumnya. Untuk Windows 10 1809 harus ada paket bahasa khusus untuk Windows 10 1809.

Microsoft mengikuti rencananya untuk secara bertahap mentransfer pengaturan dari menu klasik ke menu baru, sehingga di panel kontrol klasik Anda tidak akan lagi menemukan pengaturan untuk mengubah bahasa dan menginstal paket bahasa. Pengaturan ini sekarang hanya ada di parameter sistem.

Dalam mode audit, Anda mungkin mengalami masalah saat membuka pengaturan sistem dari menu Mulai; untuk membuka pengaturan sistem, jalankan perintah - "ms-settings:", perhatikan titik dua di akhir perintah, tanpanya perintah akan tidak bekerja. Setelah membuka parameter sistem setelah menggunakan perintah ini, dapat dibuka menggunakan menu grafis.

Namun dalam pengaturan sistem Anda dapat menginstal paket bahasa jika sistem terhubung ke Internet, tidak ada opsi untuk memilih menginstal paket bahasa dari file lokal.

Saya tidak akan menjelaskan proses pelokalan sistem karena... ini akan sangat memperumit artikel ini, terutama karena proses pelokalannya sangat rinci dijelaskan di sini. Namun saya ingin menarik perhatian Anda pada kekhasan mengubah bahasa sistem setelah menginstal paket bahasa menggunakan konsol. Fitur ini dijelaskan di wiki yang sama yang saya berikan tautannya sebelumnya, di subbagian "Menambahkan bahasa ke daftar bahasa".

Saya akan menginstal paket bahasa tanpa koneksi internet.

Setelah lokalisasi sistem selesai, pastikan untuk membuat image sistem.

Langkah 4 - Instal aplikasi yang diperlukan

Karena Karena sistem LTSB dan LTSC tidak memiliki toko aplikasi, maka menginstal aplikasi dari Microsoft Store menyebabkan beberapa kesulitan, yaitu mengunduh aplikasi. Untuk mengunduh aplikasi, perusahaan Adguard telah membuat layanan yang sangat nyaman - "Toko Adguard", yang dengannya Anda bisa mendapatkan tautan unduhan sementara untuk aplikasi dan komponennya.

Untuk menginstal aplikasi, Anda memerlukan file dengan ekstensi “Appx” dan “AppxBundle”. Sebelum menginstal aplikasi itu sendiri, Anda harus menginstal komponen-komponennya. Biasanya, komponen dari suatu aplikasi dapat dibedakan secara intuitif berdasarkan nama file.

Agar artikel tidak terlalu panjang, saya tidak akan menjelaskan secara detail proses instalasi aplikasi, apalagi di dalamnya terdapat informasi instalasi petunjuk terperinci. Namun saya akan menambahkan satu cara lagi untuk menginstal aplikasi ke akun Anda saat ini. Aplikasi dapat diinstal menggunakan program "Pemasang Aplikasi", tetapi untuk menginstal aplikasi Anda memerlukan koneksi Internet, tetapi aplikasi dapat diinstal dengan klik dua kali dan Anda tidak memerlukan komponennya, semua komponen yang diperlukan akan diunduh dan diinstal "Pemasang Aplikasi".

Dan sedikit pengingat, saat menginstal aplikasi ke akun saat ini, Anda tidak akan dapat menyegel sistem. Cara menginstal aplikasi agar dapat menyegel sistem, lihat petunjuk di atas. Dan untuk mengecek pengoperasian multikiosk, aplikasi yang ada sudah cukup memadai.

Langkah 5 – membuat file konfigurasi untuk multikios

Sekarang kita sampai pada bagian yang paling menarik - menyiapkan mode kios. Mari lihat petunjuk sesuai dengan pengaturan yang kita lihat. Pertama-tama, kita perlu membuat file konfigurasi XML, contoh lengkapnya dapat ditemukan di sini. lihat di sini.

Mari kita mulai dengan menyiapkan tata letak ubin. Cara termudah untuk membuat konfigurasi penyesuaian ubin XML adalah mengekspor keadaan mereka saat ini.

Pertama-tama, mari tambahkan ubin aplikasi yang kita perlukan ke menu Start. Panggil pencarian “Win+s”, temukan aplikasi yang diinginkan, klik kanan padanya dan pilih “Pin to Start Screen”.

Saya telah menyematkan aplikasi berikut:

  • Notepad
  • Kalkulator
  • Internet Explorer
  • Cat
  • WordPad
  • Parameter
  • Keamanan Windows

Dua lamaran terakhir disematkan karena... Tidak ada aplikasi universal lainnya dalam paket LTSC standar. Perhatikan bahwa ubin desktop tertaut ke pintasan. Sekarang, dengan memindahkan ubin langsung di menu Start, saya akan memisahkan ubin yang disematkan menjadi dua kelompok. Untuk membuat grup ubin baru, seret ubin lebih tinggi atau lebih rendah secara signifikan dibandingkan ubin lainnya, yang akan menyorot pembagi intuitif. Anda dapat memberi nama grup sesuai kebijaksanaan Anda; untuk melakukan ini, letakkan kursor mouse di atas grup, dan ketika tulisan “Beri nama grup” muncul, klik tombol kiri mouse. Saya akan memanggil grup pertama "Pengaturan", itu akan mencakup ubin "Pengaturan" dan "Keamanan Windows". Saya akan menyebut grup kedua “Aplikasi Office”, yang akan mencakup semua ubin lainnya. Omong-omong, Anda dapat memindahkan seluruh grup ubin dengan menyeretnya menggunakan dua garis yang terletak di kanan atas nama grup.

Karena Pada ubin "Keamanan Windows" namanya tidak pas sepenuhnya, saya akan mengubah ukurannya menjadi "Lebar". Untuk mengubah ukuran ubin, klik kanan pada ubin dan pilih “Ubah Ukuran”.

Setelah konfigurasi, kami mengekspor keadaan saat ini dan menjalankan perintah di lingkungan PowerShell – “Export-StartLayout – path C:SysprepStartLayout.xml”.

Selanjutnya, cara termudah bukan dengan membuat file pengaturan sendiri, tetapi ambil contoh file dari sini pengaturan – klik tombol “Salin”, tempelkan konten ke notepad dan simpan sebagai “MultiAppKiosk.xml”. Sekarang kita ubah pengaturannya menjadi milik kita sendiri. Untuk mengubah pengaturan ubin terlampir, salin seluruh blok “StartLayoutCollection” dari “StartLayout.xml” ke “MultiAppKiosk.xml”. Untuk menambahkan aplikasi ke aplikasi yang diizinkan, Anda perlu memasukkan pengidentifikasi aplikasi universal ke bagian "AllowedApps" dan di blok yang sama menambahkan path lengkap ke file aplikasi klasik yang dapat dieksekusi, yang ditentukan dalam properti pintasan yang digunakan ubin merujuk. Untuk mengakses pintasan dengan cepat, klik kanan pada ubin yang disematkan dan buka Lainnya > Buka Lokasi File. Perhatikan bahwa parameter "AppUserModelId" digunakan untuk menentukan ID Aplikasi Universal, dan parameter "DesktopAppPath" digunakan untuk menentukan jalur lengkap ke aplikasi desktop. Dan satu lagi nuansa kecil, jika Anda berencana menggunakan IE pada sistem x64, maka dalam daftar aplikasi yang diizinkan Anda harus menentukan dua jalur untuk file yang dapat dieksekusi “Program FilesInternet Exploreriexplore.exe” dan “Program Files (x86)Internet Exploreriexplore. exe”.

Saya tidak akan memberikan akses ke folder, jadi saya menghapus bagian “FileExplorerNamespaceRestrictions”.

Menampilkan taskbar tidak mengganggu saya, jadi saya membiarkan semuanya apa adanya di bagian “Taskbar”.

Contohnya menunjukkan dua profil, tetapi saya hanya akan memiliki satu profil, sehingga bagian dengan profil kedua dapat dihapus. Sebelum mencopot pemasangan, perhatikan contoh memulai aplikasi secara otomatis dengan argumen.

Di bagian “Konfigurasi”, akun ditautkan ke profil; harap diperhatikan bahwa beberapa akun dapat ditautkan ke satu profil. Tapi karena Saya hanya tertarik pada satu akun, maka saya akan menghapus semua ikatan kecuali yang pertama - blok "Config". Di sisa pengikatan saya akan menulis nama pengguna "Pengguna".

Saya mendapatkan file ini dengan parameter

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>

Saat Anda membuat file konfigurasi XML, jangan lupa bahwa setiap profil harus memiliki ID unik, dan tidak hanya dalam satu file XML, tetapi dalam satu OS. Itu. Idealnya, untuk menghindari kebingungan, Anda dapat membuat pengidentifikasi baru setiap kali; ini dapat dilakukan di lingkungan PowerShell menggunakan perintah “[guid]::NewGuid()”. Dan pastikan untuk menyimpan file dalam pengkodean "UTF-8"; jika file disimpan dalam pengkodean "ANSI", maka ketika membuat paket persiapan Anda akan menerima kesalahan jika file XML berisi Cyrillic.

Langkah 6 – menerapkan pengaturan multikios

Mari kita lihat dua cara untuk menerapkan pengaturan yang dijelaskan dalam file konfigurasi. Yang pertama adalah melalui paket penyediaan yang harus dibuat di ICD. Bagi sebagian orang, mungkin cara ini akan lebih familiar. Yang kedua adalah menggunakan "Penyedia MDM Bridge WMI", metode ini menurut saya lebih nyaman.

Metode # 1

Siapa yang tidak memiliki ICD? unduh ADK dan instal. Menginstal ADK sangat sederhana; kumpulan komponen dapat dibiarkan default.

Luncurkan ICD, klik ubin “Persiapan lanjutan”, tentukan nama dan folder proyek dan klik “Berikutnya”. Di jendela berikutnya, pilih “Semua edisi desktop Windows” dan klik “Berikutnya”. Anda dapat melewati impor paket persiapan; klik "Selesai".

Perluas menu drop-down “Runtime Settings”, lalu perluas submenu “AssignedAccess” dan pilih “MultiAppAssignedAccessSettings”. Di bagian atas tengah jendela ICD, klik tombol "Jelajahi" dan tunjukkan lokasi file XML dengan pengaturannya. Untuk berjaga-jaga, Anda dapat menyimpan proyek dengan menekan “Ctrl+s”. Di bagian kiri atas ICD, pilih “Ekspor” dan pilih “Paket Penyediaan” dari menu tarik-turun. Sebagai pemilik, pilih "Administrator TI"; semua pertanyaan lainnya dapat dilewati dengan mengklik "Berikutnya" dan pada akhirnya klik "Bangun" dan "Selesai".

Pada sistem yang terinstal, jangan lupa untuk membuat pengguna "Pengguna", ia tidak dapat ditambahkan ke grup "Administrator", jika tidak, multikios tidak akan berfungsi. Saya membuat pengguna di Manajemen Komputer dengan kata sandi yang tidak pernah kedaluwarsa.

Sekarang kita jalankan paket persiapan pada sistem yang diinstal sebelumnya. Setelah menerapkan paket persiapan, menu Start dan menu administrator akan berubah. Di kolom awal kiri, tombol-tombol tersebut akan hilang: "Dokumen", "Gambar", "Opsi". Jika menu mulai tidak berubah, berarti ada yang tidak beres. Paket yang diinstal dapat dihapus dengan membuka jendela Pengaturan > Akun > Akses akun kerja atau sekolah > Tambahkan atau hapus paket penyediaan.

Jika menu mulai telah berubah, maka pengaturan diterapkan ke sistem, masuk sebagai pengguna yang multikiosnya dikonfigurasi dan lihat hasilnya.

Metode # 2

Menerapkan pengaturan menggunakan "Penyedia WMI Jembatan MDM" dijelaskan di sini. Kenyamanan metode ini adalah fleksibilitas penggunaannya dan kemampuan untuk menghilangkan banyak operasi manual yang diperlukan untuk membuat paket persiapan. Di sini setiap orang dapat membuat keputusan sendiri yang nyaman bagi mereka. Saya membuat beberapa skrip untuk diri saya sendiri.

MiltiKiosk.bat – skrip peluncuran

@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 – skrip utama

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

Jika Anda ingin menggunakan solusi saya, simpan skrip di atas dengan nama aslinya dalam satu folder dan letakkan file “PsExec.exe” di folder yang sama. Di folder yang sama, buat folder “XML” dan salin file XML untuk mengkonfigurasi multikios ke dalamnya. Saya akan menggunakan file yang sama seperti pada metode pertama.

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>

Sedikit tentang fitur script. Skrip dirancang untuk menggunakan file XML dengan pengkodean "UTF8"; jika Anda ingin menggunakan pengkodean "ANSI", hapus parameter "encoding UTF8" dari opsi pembacaan file. Anda harus menempatkan file XML di folder "XML" tanpa mengganti karakter, skrip itu sendiri akan mengganti karakter khusus dengan sebutan yang sesuai. Agar tidak bingung dalam GUID untuk menghubungkan pengguna ke profil, Anda cukup menunjukkan nomor atau nama pengguna dalam kurung kurawal; semua konten dalam kurung kurawal akan diganti dengan GUID.

Menggunakan skrip ini sangat sederhana, cukup jalankan dan pilih item yang diperlukan. Untuk mengubah konfigurasi saat ini ke konfigurasi baru, konfigurasi saat ini tidak perlu dihapus; konfigurasi tersebut akan ditimpa. Jangan lupa untuk membuat pengguna yang ditentukan dalam file konfigurasi.

Saat melihat konfigurasi multikios saat ini di sesi yang sama saat diterapkan, alih-alih karakter khusus, kombinasi karakter pengganti akan ditampilkan. Setelah mengubah sesi (memulai ulang skrip), semua karakter khusus akan ditampilkan dalam bentuk aslinya.

Langkah 7 - Menyegel Sistem

Multikiosnya berfungsi, ya, itu saja, sepertinya...

Jika semuanya berjalan sesuai rencana, maka Anda tidak memperhatikan sesuatu.

Jangan lupa bahwa kita masih perlu mengalihkan sistem dari mode audit ke mode selamat datang. Baiklah, kami siap untuk ini, kami meluncurkan “Sysprep.bat”, pilih poin 2, sistem disegel. Kami menyalakan perangkat, sistem melakukan booting, kami masuk ke akun pengguna yang multikiosnya dikonfigurasi, tetapi kami tidak dapat masuk. Setelah pesan “Selamat Datang”, pesan “Keluar” muncul.

Awalnya saya ingin menjelaskan hanya solusi masalah, tetapi kemudian saya memutuskan untuk menjelaskan langkah-langkah untuk mengidentifikasi masalah dan menemukan solusi paling sederhana karena... Pasti banyak pembaca yang akan tersiksa oleh keraguan samar - “Bagaimana jika seperti ini…”. Menurut saya, menjelaskan berbagai eksperimen akan menghemat banyak waktu jika Anda ingin mencari solusi lain. Untuk membuat informasi seakurat mungkin, dan sekali lagi memastikan tidak ada kesalahan, saya akan menjelaskan eksperimen dalam format “selesai dan dicatat”. Itu. Saya akan melakukan eksperimen yang dijelaskan lagi.

eksperimen

Apa yang telah kita lakukan? Ada dua akun dalam sistem:

“Admin” – di grup “Administrator”.
“Pengguna” – di grup “Pengguna”.
Dalam mode audit, multikios berfungsi, tetapi ketika disegel, tidak berfungsi.

Eksperimen 1

Kami menghapus paket persiapan yang diinstal, di snap-in "Manajemen Komputer" kami menghapus pengguna "Pengguna" dan membuat pengguna baru dengan nama "Pengguna", menerapkan paket persiapan, buka akun "Pengguna" - itu tidak tidak bekerja. Kami menggunakan nama "Admin", menghapus pengguna "Pengguna" dari grup "Pengguna", menambahkannya ke grup "Administrator", menggunakan nama "Pengguna" - itu tidak berfungsi. Kami login dengan nama "Admin", hapus paket persiapan dengan multikios, login dengan nama "Pengguna" - kami berhasil login, tetapi tentu saja mode multikios tidak berfungsi karena Paket penyediaan telah dihapus.

Eksperimen 2

Kami mengunggah gambar sistem - Russified dalam mode audit.

OS telah dimuat, tekan "Win+r", karena Jendela sysprep kita telah tertutup secara otomatis, jalankan perintah “sysprep”, dan jalankan “sysprep” di jendela yang terbuka. Pengaturan sysprep di jendela: "Buka jendela selamat datang sistem (OOBE)", "Persiapan untuk digunakan", "Reboot". Klik "OK" dan tunggu salam OS. Kami menjawab pertanyaan saat sistem melakukan booting untuk pertama kalinya: “Lanjutkan dalam bahasa yang dipilih?” - "Rusia"; wilayah – Rusia; tata letak keyboard – Rusia; tambahkan tata letak keyboard kedua - lewati; “Mari menghubungkan Anda ke jaringan” – “Lewati sekarang”; terhubung ke Internet - tidak; perjanjian lisensi - terima; “Siapa yang akan menggunakan komputer ini” – “Tes”; membuat kata sandi - biarkan kolom kosong; Pengoperasian yang mudah pada perangkat yang berbeda – tidak; Pengaturan privasi – terima. OS telah dimuat, di snap-in "Manajemen Komputer" kami membuat pengguna dengan nama "Pengguna", tambahkan paket persiapan. Hasilnya adalah tidak berhasil.

Eksperimen 3

Kami mengunggah gambar sistem - Russified dalam mode audit.

OS telah dimuat, sambungkan sistem ke Internet, jalankan perintah "gpedit.msc" dan di bagian "Pembaruan Windows" aktifkan opsi "Aktifkan pembaruan yang disarankan melalui pembaruan otomatis", reboot untuk berjaga-jaga. Di pusat pembaruan, klik "Periksa pembaruan" dan reboot hingga semua pembaruan diinstal. Putuskan sambungan sistem dari Internet. Kami meluncurkan "sysprep" dalam mode grafis dan mengulangi semua langkah yang dijelaskan pada langkah sebelumnya mulai dari menjalankan utilitas "sysprep" hingga menambahkan paket persiapan. Hasilnya adalah tidak berhasil.

Eksperimen 4

Kami mengunggah gambar sistem - Bahasa Inggris dalam mode audit.

Kami meluncurkan "sysprep" dalam mode grafis, menyegel OS dengan parameter yang sama seperti pada percobaan 2. Saat sistem pertama kali boot, kami memilih parameter yang sama seperti pada percobaan 2, dengan pengecualian parameter regional dan bahasa karena Tidak ada bahasa Rusia. Dengan cara yang sama, buat pengguna “Pengguna” dan tambahkan paket penyediaan. Hasilnya berhasil. Itu. Masalahnya terkait dengan lokalisasi.

Eksperimen 5

Kami mengunggah gambar sistem - Russified dalam mode audit.

Di snap-in "Manajemen Komputer", buat pengguna "Pengguna", tambahkan paket persiapan, buka akun "Pengguna", multi-kios berfungsi.

Keluar dari akun Anda dan masuk dengan akun “Admin”. Kami meluncurkan PowerShell dengan hak administrator, jalankan perintah "Dism /online /Get-Intl" dan lihat "Bahasa antarmuka pengguna default: en-US".

Kami boot dari flash drive ke WinPE, OS yang diterapkan ada di drive E. Kami menjalankan perintah "Dism /image:E: /Set-UILang:ru-ru". Kami melihat hasilnya, jalankan "Dism /image:E: /Get-Intl" dan lihat "Bahasa UI sistem default: ru-RU".

Kami boot ke sistem, masuk ke akun "Pengguna", multikios tidak berfungsi.

Untuk memperjelas hubungan sebab-akibat dari masalah tersebut, mari kita coba lagi membuat multi-kios berfungsi dan tidak berfungsi.

Kami boot dari flash drive ke WinPE, OS yang diterapkan ada di drive E. Kami menjalankan perintah "Dism /image:E: /Set-UILang:en-us". Kami melihat hasilnya, jalankan "Dism /image:E: /Get-Intl" dan lihat "Bahasa UI sistem default: en-US".

Kami boot ke sistem, masuk ke akun "Pengguna", multikios berfungsi.

Kami boot dari flash drive ke WinPE, OS yang diterapkan ada di drive E. Kami menjalankan perintah "Dism /image:E: /Set-UILang:ru-ru". Kami melihat hasilnya, jalankan "Dism /image:E: /Get-Intl" dan lihat "Bahasa UI sistem default: ru-RU".

Kami boot ke sistem, masuk ke akun "Pengguna", multikios tidak berfungsi.

Itu. Anda dapat melihat ketergantungan yang jelas antara kinerja kios pada bahasa antarmuka pengguna default. Mungkin ada beberapa faktor lain yang mempengaruhi kinerja multikios tersebut?

Eksperimen 6

Demi kemurnian percobaan, kami mengisi ulang sistem. Kami mengunggah gambar sistem - Russified dalam mode audit.

Kami meluncurkan "sysprep" dalam mode grafis, menyegel OS dengan parameter yang sama seperti pada percobaan 2. Kami menunggu OS menyambut kami dan menjawab pertanyaan: "Lanjutkan dalam bahasa yang dipilih?" – “Bahasa Inggris (Amerika Serikat)”; wilayah – Rusia; Tata letak keyboard – Rusia. Selanjutnya semua parameter dipilih seperti pada percobaan 2.

Mari kita lihat pengaturan bahasa antarmuka pengguna default. Kami menjalankan perintah "Dism /online /Get-Intl" dan melihat "Bahasa UI sistem default: en-US". Di snap-in "Manajemen Komputer", buat pengguna "Pengguna", tambahkan paket persiapan, buka akun "Pengguna", multi-kios berfungsi.

Kami mencoba mendobrak kios dengan mengubah bahasa antarmuka pengguna default. Kami masuk ke pengguna "Tes", yang dibuat saat sistem pertama kali boot dan mengaktifkan login otomatis untuknya sehingga sistem tidak langsung boot ke akun "Pengguna". Jalankan "netplwiz", pilih pengguna "Uji", hapus centang pada kotak "Memerlukan nama pengguna dan kata sandi" dan terapkan parameternya.

Boot dari flash drive ke WinPE. Jalankan perintah “Dism /image:E: /Set-UILang:ru-ru”. Kami melihat hasilnya, jalankan "Dism /image:E: /Get-Intl" dan lihat "Bahasa UI sistem default: ru-RU".

Kami boot ke sistem, coba masuk ke akun "Pengguna", multikios berfungsi. Itu. itu tidak bisa dipatahkan. Apakah mungkin untuk membuatnya bekerja dengan cara ini?

Eksperimen 7

Kami mengunggah gambar sistem - Russified dalam mode audit.

Kami meluncurkan "Sysprep.bat", pilih poin 2. Kami boot ke sistem, buat pengguna "Pengguna" di snap-in "Manajemen Komputer", tambahkan paket persiapan, buka akun "Pengguna", multi- kios tidak berfungsi.

Boot dari flash drive ke WinPE. Jalankan perintah “Dism /image:E: /Set-UILang:en-us”. Kami melihat hasilnya, jalankan "Dism /image:E: /Get-Intl" dan lihat "Bahasa UI sistem default: en-US".

Kami boot ke sistem, coba masuk ke akun "Pengguna", multikios tidak berfungsi.

Ternyata dengan mengubah pengaturan bahasa antarmuka pengguna default, Anda dapat memengaruhi kinerja multikios hanya saat sistem berada dalam mode audit atau saat boot pertama setelah menyegel sistem. Ini berarti Anda harus menyegel sistem dengan file respons di mana bahasa sistem akan dipilih dalam bahasa Inggris, dan kemudian mengubah pengaturan sistem sehingga antarmukanya adalah bahasa Rusia. Bukan solusi yang sangat baik. Mungkin masalahnya bisa diselesaikan dengan menginstal paket bahasa atau menginstal paket bahasa tambahan?

Eksperimen 8

Kami mengunggah gambar sistem - Bahasa Inggris dalam mode audit.

Kami terhubung ke Internet, di parameter sistem, buka bagian "Bahasa", pilih "Tambahkan bahasa", pilih bahasa "Rusia", klik "Berikutnya", biarkan parameter instalasi sebagai default, klik "Instal", setelah instalasi paket bahasa kami me-reboot sistem, sekarang di Russified. Putuskan sambungan sistem dari Internet, jalankan “Sysprep.bat”, pilih poin 2.

Setelah memuat sistem, di snap-in "Manajemen Komputer", buat pengguna "Pengguna", tambahkan paket persiapan, buka akun "Pengguna", multi-kios tidak berfungsi.

Eksperimen 9

Mari kita coba melakukan Russify sistem sebelum instalasi, dalam mode offline. Pada saat yang sama akan ada program pendidikan singkat mengenai lokalisasi distribusi.

Saya mengambil flash drive dengan distribusi asli yang bersih - X21-96381. Ini akan menjadi drive "E". Untuk memasang gambar, saya membuat folder: “c:MountInstall”, “c:MountWinre”, “c:MountBoot”. Saya mengambil satu set paket pelokalan - X21-87814. Dan ke dalam folder “c:Mount” saya menyalin paket darinya: “Microsoft-Windows-Client-Language-Pack_x86_ru-ru.cab”, “lp.cab”, “WinPE-Setup_ru-ru.cab”. Saya meluncurkan konsol dengan hak administrator. Saya pikir perintah selanjutnya akan jelas tanpa komentar.

Perintah lokalisasi

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

Kami mem-boot dari flash drive, pilih bahasa Rusia dan instal sistem pada disk kosong. Saat sistem meminta Anda memilih wilayah, tekan “Ctrl+Shift+F3”. Di snap-in "Manajemen Komputer", buat pengguna "Pengguna", tambahkan paket persiapan, buka akun "Pengguna", multi-kios tidak berfungsi.

Boot dari flash drive ke WinPE. Jalankan perintah “Dism /image:E: /Set-UILang:en-us”.

Kami boot ke sistem, coba masuk ke akun "Pengguna", multikios berfungsi.

Ternyata masalahnya bukan pada metode penambahan paket, mari kita coba menambahkan paket tambahan.

Eksperimen 10

Kita ambil flashdisk yang sudah kita siapkan pada langkah sebelumnya.

Kami mengambil paket “Feat on Demand” – X21-87815. Saya menyalin paket-paket darinya ke folder “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».

Luncurkan konsol dengan hak administrator dan jalankan perintah:

Tim

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

Kami mem-boot dari flash drive, pilih bahasa Rusia dan instal sistem pada disk kosong. Saat sistem meminta Anda memilih wilayah, tekan “Ctrl+Shift+F3”. Di snap-in “Manajemen Komputer”, buat pengguna “Pengguna”, tambahkan paket penyediaan, dan masuk ke akun “Pengguna”. Saya mendapat layar hitam yang hang untuk waktu yang lama, jadi saya mem-boot sistem dengan panas.

Kami menghapus paket persiapan, login sebagai "Pengguna", reboot sistem, tambahkan paket persiapan, multikios tidak berfungsi.

Boot dari flash drive ke WinPE. Jalankan perintah “Dism /image:E: /Set-UILang:en-us”.

Kami boot ke sistem, coba masuk ke akun "Pengguna", multikios berfungsi.

Solusi

Pahlawan biasa. Mereka selalu mengambil jalan memutar!

Berbagai metode untuk menginstal paket lokalisasi tidak menyelesaikan masalah, yang berarti Anda harus menginstal bahasa “en-us” pada boot pertama setelah penyegelan, dan mengubah pengaturan bahasa setelah boot pertama.

Kami mengunggah gambar sistem - Russified dalam mode audit.

Pada file “Unattend.xml”, masukkan “en-US” pada parameter, jalankan “Sysprep.bat”, pilih poin 2 dan lihat apa yang kita dapatkan. Layar selamat datang dalam bahasa Inggris, multi-kios berfungsi. Ini berarti Anda perlu menambahkan perintah ke “Unattend.xml” untuk mengubah bahasa ucapan. Dan untuk melakukan ini, Anda perlu menjalankan perintah "control intl.cpl,, /f:" yang menunjukkan file konfigurasi, yang akan menentukan penyalinan parameter saat ini ke layar selamat datang. Isi file konfigurasi akan terlihat seperti ini.

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

Karena akan menyalin pengaturan pengguna saat ini, maka perintah harus dijalankan setelah pengguna login, yang berarti kita memerlukannya. Ada satu "tetapi" kecil, eksekusi akan dilakukan setelah pengguna dengan hak administrator masuk. Dan saya tidak ingin membuat file tambahan yang diperlukan agar perintah dapat dijalankan dengan sukses. Lebih baik menerapkan seluruh solusi dalam satu file - “Unattend.xml”. Untuk melakukan ini, Anda hanya perlu menjalankan perintah yang membuat file konfigurasi. Saya rasa saya akan membuat file konfigurasi menggunakan perintah "echo" di lingkungan "cmd", tetapi file tersebut harus keluar dari tanda kurung sudut dengan tanda sirkumfleksa. Itu. Untuk membuat file konfigurasi, diperoleh perintah berikut.

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

Namun kita perlu menempatkan perintah ini dalam XML, yang memiliki persyaratan tersendiri untuk penggunaan karakter khusus:

Karakter spesial
Nilai penggantian

>
&gt;

<
&lt;

&
&amp;

'
&apos;

"
&quot;

Hasilnya, untuk membuat file konfigurasi, kami mendapat perintah berikut untuk "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;

Selanjutnya, kita jalankan perintah menggunakan file konfigurasi.

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

Selanjutnya, hapus file yang dibuat sebelumnya dan reboot sistem. perubahan akan berlaku setelah reboot.

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

Hasilnya, saya mendapatkan file jawaban berikut untuk sysprep.

Tanpa pengawasan.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>

Mari kita periksa...

Kami mengunggah gambar sistem - Russified dalam mode audit.

Kami mengubah file Unattend.xml ke yang baru, jalankan "Sysprep.bat", pilih poin 2 dan lihat apa yang kami dapatkan. Saat Anda boot pertama kali, layar selamat datang dalam bahasa Inggris dan sistem di-boot ulang. Layar selamat datang dalam bahasa Rusia, multikios berfungsi.

Jika Anda memiliki pertanyaan tentang pengaturan dan pelisensian Windows 10 IoT Enterprise, silakan hubungi: [email dilindungi] atau ke situs web quarta-embedded.ru.
Anda dapat menemukan jawaban atas beberapa pertanyaan di wiki kami atau di kami Saluran Youtube

Penulis artikel: Vladimir Borisenkov, pakar teknis di Quarta Technologies.

Sumber: www.habr.com