Введение
Windows 10 IoT Enterprise 2019 – маркетинговое наименование очередного выпуска Windows 10. Выход данной версии был объявлен в сентябре 2018 года, соответственно имеет версию 1809, 18 – год, 09 – месяц. По новому выпуску Windows 10 1809 написано много статей, но большинство из них посвящено различным «бантикам», «красивостям» и различному функционалу, который востребован в домашних условиях.
В данной статье пойдет речь только о функционале, который может быть востребован среди производителей устройств фиксированного назначения. А именно о новых возможностях режима «Киоск». Также будет затронута тема изменения наименований схем обслуживания редакций Windows корпоративного сегмента.
Старая схема обслуживания с новым названием
Начну с небольшого пояснения, в корпоративном сегменте редакций Windows есть две схемы обслуживания, по которым Windows получает обновления. Схемы обслуживания имеют буквенное обозначение. Сейчас ветки обслуживания называются LTSC и SAC.
LTSC – означает Long Term Servicing Channel (с долгосрочным обслуживанием). Ранее такой канал назывался LTSB – Long Term Servicing Branch, Майкрософт просто изменил название канала обслуживания, само обслуживание осталось прежним.
Также Майкрософт поменял название ветки обслуживания CBB – Current Branch for Business, теперь эта ветка обслуживания называется SAC – Semi-Annual Channel. Опять же поменялось только название.
Но следует упомянуть, что для веток обслуживания LTSC и SAC используются разные дистрибутивы Windows.
Немного о новом режиме киоска в SAC
Как я уже говорил, у LTSC и SAC разные дистрибутивы. В LTSC нет стандартных универсальных приложений и магазина приложений, а в SAC есть. Соответственно, в LTSC нет браузера Edge, а в SAC он есть. Если при настройке киоска выбрать браузер Edge, то теперь доступы два режима:
- Как цифровой знак или интерактивный дисплей
- Как общедоступный браузер
Не буду останавливаться на настройке данных режимов, т.к. настройка очень простая и выполняется в графическом интерфейсе. Просто создайте пользователя, который не состоит в группе «Администраторы», включите для него режим киоска с использованием EDGE и посмотрите на работу данных режимов.
Киоск с множеством приложений
Некоторые думают, что лицензионное использование Windows 10 IoT Enterprise подразумевает работу только одного приложения на устройстве, на самом деле это не так. Устройство должно быть предназначено для выполнения одной бизнес-задачи и у пользователя не должно быть доступа к рабочему столу. Теперь Майкрософт сам дал инструмент для использования множества приложений. Данный режим называется «multi-app kiosk», далее для краткости я буду называть его «мультикиоск». В данной статье мы рассмотрим настройку данного режима с помощью пакета обеспечения и некоторые особенности данного режима.
Немного о режиме «Мультикиоск»
При входе в учетную запись пользователя для которой настроен режим мультикиоска система будет работать в режиме планшета. Меню «Пуск» будет развернуто на весь экран, в котором будут отображаться плитки приложений.
Перечень основных настроек и возможностей режима:
- Настройка для множества пользователей или групп
- Каждому пользователю или группе можно назначить индивидуальные настройки
- Возможность использования универсальных и классических приложений
- Возможность автоматического запуска одного из приложений при входе пользователя в систему
- Работа приложений по белому списку
- Доступ к папкам по белому списку
Стоит обратить внимание на пункт 5. По умолчанию будет разрешена работа только тем приложениям, которые необходимы для работы системы, остальные приложения нужно добавить в список разрешенных. Т.е. теперь не нужно отдельно настраивать AppLocker. Кстати, чтобы избежать конфликта настроек AppLocker’а, в режиме мультикиоска все настроенные правила AppLocker’а действовать не будут.
В пункте 6 обозначена хорошая возможность, но на данный момент возможно дать разрешение на запись только для папки «Downloads». Режим позволяет использовать универсальные и классические приложения. Все настройки режима указываются в XML-файле, в котором также можно указать настройки для киоска с одним приложением.
А теперь попробуем все это настроить…
Что нам понадобится…
- В первую очередь нам понадобится сама система, которая поддерживает режим мультикиоска. Здесь можно скачать демонстрационную версию
- Инструкция по настройке мультикиоска
- Любой XML редактор
- Для применения настроек мульткиоска:
- Для способа №1 — ICD, который входит в состав ADK. ADK можно скачать здесь
- Для способа №2 – утилита PsExec. Утилиту можно скачать здесь
Он сказал – «Поехали!»
Все опыты я буду проводить на Windows 10 IoT Enterprise 1809 LTSC x32 коммерческая версия, а не демонстрационная. Система будет без активации т.к. отсутствие активации не сказывается на функционале системы. Я взял 32 бита только потому, что она занимает меньше места и работать с образами системы будет быстрее.
Шаг 1 – установка
Установка Win 10 IoT Enterprise ничем не отличается от установки Win 10 Enterprise, поэтому весь процесс установки описывать не буду, скажу лишь о некоторых нюансах.
На всякий случай напомню, не ставьте систему поверх установленной. Когда установщик спросит о месте установки системы удалите все разделы на будущем системном диске и укажите неразмеченный диск.
Ставим систему без подключения к интернету, чтобы система не подтянула ничего лишнего.
Т.к. мы будем создавать резервные образа системы и для этого будем ее запечатывать в режиме аудита, то можно сэкономить немного времени загрузив систему в режиме аудита сразу после установки. Для этого, когда система у Вас попросит выбрать регион «Let’s start with region. Is this right» просто нажмите «Ctrl+Shift+F3».
Шаг 2 – создаем образ системы
Т.к. мы будем издеваться над системой пробовать различные новые настройки, то не исключено что что-то пойдет не так и нужно будет вернуть систему в исходное состояние. А для быстрого возврата в исходное состояние нужно создать образ системы. Единственное что я сделаю, это скопирую «джентльменский набор» – скрипт и файл ответов. Все файлы у меня находятся на в папке «Sysprep», которую я скопирую в корень системного диска. И естественно, я поделюсь с Вами данным «джентльменским набором».
Sysprep.bat – для запечатывания системы.
@echo off
chcp 1251>nul
net session>nul 2>nul
if %errorLevel% neq 0 (powershell -command "Start-Process "%~s0" -Verb RunAs"&exit)
tasklist /fi "ImageName eq sysprep.exe" | find /i "sysprep.exe"
if %errorlevel% lss 1 (taskkill /im sysprep.exe)
set AdminName=Admin
net user %AdminName%>nul 2>nul
if %errorLevel% neq 0 (call :AddAdmin "%AdminName%")
if %errorLevel% neq 0 (call :ShowMessage "‡‡‡Ошибка создания новой учетной записи администратора "%AdminName%"‡‡Нажмите любую клавишу для завершения работы скрипта"&pause>nul&exit)
pushd "%~dp0"
cls
call :ShowMessage ‡‡‡‡‡‡‡‡‡‡
echo 1 - Запечатать систему в режиме аудита
echo 2 - Запечатать систему в режиме приветствия
:Select
set /p Choice="Введите номер пункта меню: "
if "%Choice%"=="1" (goto Audit)
if "%Choice%"=="2" (goto OOBE)
echo.&echo Выбрано недопустимое значение.&goto Select
exit
:Audit
call :ShowMessage "‡‡‡‡‡Запечатывание системы в режиме аудита"
reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v KillSysprep /t REG_SZ /d "taskkill /im sysprep.exe" /f
%SYSTEMROOT%\System32\Sysprep\sysprep.exe /audit /generalize /shutdown /quiet
goto :eof
:OOBE
call :ShowMessage "‡‡‡‡‡Запечатывание системы в режиме приветствия"
reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v KillSysprep /f
powershell -command "(Get-Content -path 'Unattend.xml' -Raw).Trim() -replace 'Architecture=""".+?"""','Architecture="""%PROCESSOR_ARCHITECTURE%"""' | Set-Content -path 'Unattend.xml'"
%SYSTEMROOT%\System32\Sysprep\sysprep.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
При запуске скрипт будет проверять наличие учетной записи «Admin» и создавать ее при ее отсутствии. Учетная запись будет добавлена в группу «Администраторы».
Unattend.xml – файл ответов для sysprep’а.
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="specialize">
<component name="Microsoft-Windows-Deployment" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Path>reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\OOBE /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 HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\OOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f</Path>
<Order>2</Order>
<Description>Dont make account</Description>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Path>cmd.exe /c rd %systemdrive%\Sysprep /s /q</Path>
<Order>3</Order>
<Description>Del Folder</Description>
</RunSynchronousCommand>
</RunSynchronous>
</component>
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<AutoLogon>
<Enabled>true</Enabled>
<Username>Admin</Username>
</AutoLogon>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<InputLocale>en-US; ru-RU</InputLocale>
<SystemLocale>ru-RU</SystemLocale>
<UILanguage>ru-RU</UILanguage>
<UILanguageFallback></UILanguageFallback>
<UserLocale>ru-RU</UserLocale>
</component>
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<OOBE>
<HideEULAPage>true</HideEULAPage>
<HideLocalAccountScreen>true</HideLocalAccountScreen>
<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
<ProtectYourPC>1</ProtectYourPC>
</OOBE>
</component>
</settings>
</unattend>
При запечатывании в режиме аудита скрипт будет добавлять в реестр команду на завершение процесса «sysprep.exe» чтобы не закрыть окно sysprep’а каждый раз вручную. При запечатывании в режиме приветствия скрипт удалит из реестра команду для закрытия окна и сам поменяет значение архитектуры в файле ответов на текущую. В файле ответов содержатся параметры для загрузки системы без участия пользователя и команда для удаления папки «Sysprep» в корне системного диска.
Теперь я запечатаю систему в режиме аудита с помощью «Sysprep.bat» и сниму образ системы. Снимать образ системы я буду с помощью DISM’а и буду снимать образ только системного тома. Если Вы будете снимать образ только системного тома, а не всего диска, то не забывайте копировать содержимое каталога «Windows\System32\Recovery» на первый том в папку «Recovery\WindowsRE» после разворачивания системы. Это нужно будет сделать до загрузки ОС т.к. после загрузки ОС каталог «Windows\System32\Recovery» уже будет пустым.
Шаг 3 – русификация системы
Языковой пакет можно установить без подключения к интернету, если этот пакет у Вас есть. Если нет, то система сама его загрузит из интернета, когда Вы добавите язык в настройках. Только не нужно брать языковой пакет от предыдущих версий ОС. Для Windows 10 1809 должен быть языковой пакет именно для Windows 10 1809.
Майкрософт следует своему плану – постепенному переводу настроек из классического меню в новое, поэтому в классической панели управления Вы уже не найдете настроек для изменения языка и установки языкового пакета. Данные настройки теперь только в параметрах системы.
В режиме аудита Вы можете столкнуться с проблемой открытия параметров системы из меню «Пуск», для открытия параметров системы выполните команду – «ms-settings:», обратите внимание на двоеточие в конце команды, без него команда не будет работать. После однократного открытия параметров системы с помощью данной команды, его можно будет открывать с помощью графического меню.
Но в параметрах системы Вы можете установить языковой пакет если система подключена к интернету, там нет возможности выбора установки языкового пакета из локального файла.
Не буду описывать процесс локализации системы т.к. это существенно утяжелит статью, тем более что процесс локализации подробно описан здесь. Но хотелось бы обратить Ваше внимание на особенность изменения языка системы после установки языкового пакета с помощью консоли. Данная особенность описана в той же вики, на которую я дал ссылку ранее, в подразделе «Добавление языка в список языков».
Я установлю языковой пакет без подключения к интернету.
После полной локализации системы обязательно создайте образ системы.
Шаг 4 – установка необходимых приложений
Т.к. в системах LTSB и LTSC нет магазина приложений, то установка приложений из «Microsoft Store» вызывает некоторые трудности, а именно – загрузка приложения. Для загрузки приложений компания «Adguard» сделала очень удобный сервис – «Adguard Store», с помощью которого можно получить временные ссылки на загрузку приложений и их компонентов.
Для установки приложения Вам понадобятся файлы с расширениями «Appx» и «AppxBundle». Перед установкой самого приложения необходимо установить его компоненты. Как правило компоненты от приложения можно интуитивно отличить по названию файла.
Чтобы не делать статью слишком большой не буду подробно описывать процесс установки приложений, тем более что по установке есть подробная инструкция. Но добавлю еще один способ установки приложений в текущую учетную запись. Приложения можно установить с помощью программы «App Installer», но для установки приложений потребуется подключение к интернету, зато приложения можно будет установить двойным щелчком мыши и вам не понадобятся его компоненты, все необходимые компоненты загрузит и установит «App Installer».
И небольшое напоминание, при установке приложения в текущую учетную запись нельзя будет запечатать систему. Как установить приложения чтобы была возможность запечатать систему смотрите в вышеупомянутой инструкции. А для проверки работы мультикиоска вполне хватит уже имеющихся приложений.
Шаг 5 – создание файла настройки для мультикиоска
Вот мы и добрались до самого интересного – до настройки режима киоска. Смотрим в инструкцию по настройке и видим. Прежде всего нам понадобится создать конфигурационный XML-файл, полный пример которого можно посмотреть здесь.
Начнем с настройки расположения плиток. Самый простой способ создания XML-конфигурации настройки плиток – экспорт их текущего состояния.
Первым делом добавим в меню «Пуск» плитки тех приложений, которые нам нужны. Вызываем поиск «Win+s», находим нужное приложение, нажимаем на нем правой кнопкой мыши и выбираем пункт «Закрепить на начальном экране».
Я закрепил следующие приложения:
- Блокнот
- Калькулятор
- Internet Explorer
- Paint
- WordPad
- Параметры
- Безопасность Windows
Последние два приложения были закреплены т.к. в стандартной поставке LTSC других универсальных приложений просто нет. Обратите внимание, что плитки классических приложений ссылаются на ярлыки. Теперь путем передвижения плиток непосредственно в меню «Пуск» я разделю закрепленные плитки на две группы. Для создания новой группы плиток перетащите плитку существенно выше или ниже других плиток, при этом высветиться интуитивно понятный разделитель. Вы можете назвать группы по своему усмотрению, для этого разместите курсор мыши выше группы, а когда появится надпись – «Назвать группу» нажмите левой кнопкой мыши. Первую группу я назову «Настройки», в нее войдут плитки «Параметры» и «Безопасность Windows». Вторую группу я назову «Офисные приложения», в которую войдут все остальные плитки. Кстати, можно перемещать целиком группы плиток, перетаскивая их за две полоски, которые находятся справа вверху от названия группы.
Т.к. на плитке «Безопасность Windows» не умещается название полностью, я изменю ее размер на «Широкий». Для изменения размера плитки нужно нажать на плитке правой кнопкой мыши и выбрать пункт «Изменить размер».
После настройки экспортируем текущее состояние, выполняем команду в среде PowerShell – «Export-StartLayout – path C:\Sysprep\StartLayout.xml».
Дальше проще всего не создавать файл настроек самостоятельно, а отсюда взять пример файла настроек – нажимаем на кнопку «Copy», вставляем содержимое в блокнот и сохраняем как «MultiAppKiosk.xml». Теперь меняем настройки на свои. Для изменения настроек прикрепленных плиток копируем весь блок «StartLayoutCollection» из «StartLayout.xml» в «MultiAppKiosk.xml». Чтобы добавить приложения в разрешенные необходимо вставить идентификаторы универсальных приложений в раздел «AllowedApps» и в этот же блок добавить полный путь к исполняемым файлам классических приложений, который прописан в свойствах ярлыках, на которые ссылаются плитки. Для быстрого перехода к ярлыку, нажмите правой кнопкой мыши на закрепленной плитке и пройдите по меню «Дополнительно > Перейти к расположению файла». Обратите внимание, для указания ID универсального приложения используется параметр «AppUserModelId», а для указания полного пути к классическому приложению используется параметр «DesktopAppPath». И еще один маленький нюанс, если Вы планируете использовать IE в системе x64, то в перечне разрешенных приложений необходимо указать два пути для исполняемого файла «Program Files\Internet Explorer\iexplore.exe» и «Program Files (x86)\Internet Explorer\iexplore.exe».
Доступ к папкам я давать не буду, поэтому удаляю секцию «FileExplorerNamespaceRestrictions».
Отображение панели задач мне не помешает, поэтому в секции «Taskbar» оставляю все как есть.
В примере прописано два профиля, но у меня будет только один профиль, поэтому секцию с вторым профилем можно удалить. Перед удалением обратите внимание на пример автоматического запуска приложения с аргументами.
В секции «Configs» учетные записи привязаны к профилям, обратите внимание, что к одному профилю можно привязать множество учетных записей. Но т.к. меня интересует только одна учетная запись, то я удалю все привязки кроме первой – блоки «Config». В оставшейся привязке пропишу имя пользователя «User».
У меня получился вот такой файл с параметрами
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%\system32\notepad.exe" />
<App DesktopAppPath="C:\Program Files\Internet Explorer\iexplore.exe" />
<App DesktopAppPath="%windir%\system32\win32calc.exe" />
<App DesktopAppPath="%windir%\system32\mspaint.exe" />
<App DesktopAppPath="%ProgramFiles%\Windows NT\Accessories\wordpad.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%\Microsoft\Windows\Start Menu\Programs\Accessories\Wordpad.lnk" />
<start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Notepad.lnk" />
<start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Calculator.lnk" />
<start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Paint.lnk" />
<start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk" />
</start:Group>
</defaultlayout:StartLayout>
</StartLayoutCollection>
</DefaultLayoutOverride>
</LayoutModificationTemplate>
]]>
</StartLayout>
<Taskbar ShowTaskbar="true"/>
</Profile>
</Profiles>
<Configs>
<Config>
<Account>User</Account>
<DefaultProfile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}"/>
</Config>
</Configs>
</AssignedAccessConfiguration>
Когда будете делать свои XML-файлы настройки не забывайте, что у каждого профиля должен быть уникальный ID, причем не только в пределах одного XML-файла, а в одной ОС. Т.е. в идеале чтобы не запутаться можно каждый раз создавать новый идентификатор, это можно сделать в среде PowerShell с помощью команды «[guid]::NewGuid()». И обязательно сохраняйте файл в кодировке «UTF-8», если файл будет сохранен в кодировке «ANSI», то при сборке пакета подготовки получите ошибку если в XML-файле будет кириллица.
Шаг 6 – применение настроек мультикиоска
Рассмотрим два способа применения настроек, описанных в конфигурационном файле. Первый – с помощью пакета подготовки, который нужно создавать в ICD. Для кого-то, возможно, такой способ будет более привычным. Второй – с использованием «MDM Bridge WMI Provider», этот способ мне показался более удобным.
Способ №1
У кого нет ICD, скачиваем ADK и устанавливаем. Установка ADK очень простая, набор компонентов можно оставить по умолчанию.
Запускаем ICD, нажимаем на плитку «Дополнительная подготовка», указываем имя и папку проекта и нажимаем «Далее». В следующем окне выбираем «Все выпуски Windows для настольных компьютеров» и нажимаем «Далее». Импорт пакета подготовки можно пропустить, нажимаем «Готово».
Раскрываем выпадающее меню «Параметры среды выполнения», далее раскрываем подменю «AssignedAccess» и выбираем пункт «MultiAppAssignedAccessSettings». В верхней части средней секции окна ICD нажимаем кнопку «Обзор» и указываем расположение XML-файла с настройками. На всякий случай можно сохранить проект нажав «Ctrl+s». В левой верхней части ICD выбираем «Экспорт» в выпадающем меню выбираем пункт «Пакет подготовки». В качестве владельца выбираем «ИТ-администратор» все остальные вопросы можно пропустить, нажимая «Далее» и в конце нажимаем «Сборка» и «Готово».
В установленной системе не забываем создать пользователя «User», его нельзя добавлять в группу «Администраторы» иначе мультикиоск работать не будет. Я создал пользователя в оснастке «Управление компьютером» с неограниченным сроком действия пароля.
Теперь запускаем пакет подготовки в ранее установленной системе. После применения пакета подготовки изменится меню пуск и у администратора. В левом столбце пуска должны исчезнуть кнопки: «Документы», «Изображение», «Параметры». Если меню пуск не изменилось, то что-то пошло не так. Установленный пакет можно удалить если открыть окно «Параметры > Учетные записи > Доступ к учетной записи места работы или учебного заведения > Добавление или удаление пакета подготовки».
Если меню пуск изменилось, то настройки применены к системе, заходите под пользователем, для которого настроен мультикиоск и посмотрите на результат.
Способ №2
Применение настроек с помощью «MDM Bridge WMI Provider» описано здесь. Удобство данного способа в гибкости использования и возможности избавиться от множества ручных операций, которые нужны для создания пакета подготовки. Здесь каждый для себя может сделать решение, которое будет удобно именно ему. Я для себя сделал вот такую пару скриптов.
MiltiKiosk.bat – скрипт для запуска
@echo off
chcp 1251>nul
if not exist "%~dp0psexec.exe" call :ShowMessage "‡‡‡‡‡‡‡‡‡‡‡‡‡Для работы скрипта необходим файл psexec.exe‡‡Для завершения работы скрипта нажмите любую клавишу"&pause>nul&exit
net session>nul 2>nul
if %errorLevel% neq 0 (powershell -command "Start-Process "%~s0" -Verb RunAs"&exit)
for /f "tokens=2 delims==" %%i in ('wmic useraccount where "Name='%UserName%'" get SID /value^|find "SID"') do set SID=%%i
reg add HKU\%SID%\Software\Sysinternals\PsExec /v EulaAccepted /t REG_DWORD /d 1 /f
for /f %%i in ('dir "%~dp0%~n0*.ps1" /b /o:n') do set PSFilePath=%~dp0%%i
if not defined PSFilePath (echo Не найдено PS файлов с началом названия - "%~n0"&pause&exit)
set PSFilePath=%PSFilePath: =` %
"%~dp0psexec.exe" -i -s powershell -command "Start-Process powershell.exe -ArgumentList '-ExecutionPolicy Unrestricted -Command %PSFilePath%'"
exit
:ShowMessage
setlocal enabledelayedexpansion
set String=%~1
if not defined String (echo.&setlocal disabledelayedexpansion&goto :eof)
set /a ConCols=120 & set /a Num=1
set "String[!Num!].str=%String:‡=" & set /a Num+=1 & set "String[!Num!].str=%"
for /l %%a in (1,1,%Num%) do (
for /l %%b in (0,1,%ConCols%) do if "!String[%%a].str:~%%b!" == "" (set "String[%%a].str= !String[%%a].str! "&set /a String[%%a].len-=1) else (set /a String[%%a].len+=0||set /a String[%%a].len=0)
if not defined String[%%a].str (set String[%%a].str= )
if not !String[%%a].len! equ 0 (call set String[%%a].str=%%String[%%a].str:~,!String[%%a].len!%%)
if "!String[%%a].str: =!"=="" (echo.) else (echo !String[%%a].str!))
setlocal disabledelayedexpansion
goto :eof
MiltiKiosk_Ver.12.ps1 – основной скрипт
Function ConvertEncoding ([string]$From, [string]$To) {
Begin{$encFrom = [System.Text.Encoding]::GetEncoding($From);$encTo = [System.Text.Encoding]::GetEncoding($To)}
Process{$bytes = $encTo.GetBytes($_);$bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes);$encTo.GetString($bytes) -replace [char]0, ''}
}
Function ShowMessage ($Message='', $Align=0) {
Try {$Align = [decimal]$Align} Catch {Return 'Для параметра Align может быть указано только число' | ConvertEncoding 'windows-1251' -To 'UTF-16'}
if ($Message -is [int]) {for ($i=1; $i -le $Message; $i++) {Write-Host}; Return}
if ([System.Text.Encoding]::Default.WindowsCodePage -eq 1252) {$Message = $Message | ConvertEncoding 'windows-1251' -To 'UTF-16'}
if ($Message -is [string]) {[array] $Message = $Message}
foreach ($String in $Message) {
Try {$String = [int]$String} Catch {}
if ($String -is [int]) {for ($i=1; $i -le $String; $i++) {Write-Host}; continue}
if ($Host.UI.RawUI.BufferSize.Width -gt $String.Length) {
if ($Align -eq 0) {Write-Host $String
} else {Write-Host ("{0}{1}" -f (' ' * (([Math]::Max(0, $Host.UI.RawUI.BufferSize.Width / $Align) - [Math]::Floor($String.Length / $Align)))), $String)}
} else {Write-Host $String}
}
}
$script:NameSpace="root\cimv2\mdm\dmmap"
$script:ClassName="MDM_AssignedAccess"
$script:MultiAppKiosk = Get-CimInstance -Namespace $NameSpace -ClassName $ClassName
if (-not $MultiAppKiosk) {ShowMessage -Message (3, 'Ошибка получения объекта настроек', 2, 'Нажмите "Enter" для завершения рабты скрипта') -Align 2; Read-Host; Exit}
Function MainMenu() {
ShowMessage (13, ' 0 - Выход', ' 1 - Выбрать XML-файл для установки', ' 2 - Показать текущую конфигурацию мультикиоска', ' 3 - Удалить настройки мультикиоска', 1)
$local:PromptText = 'Выберите действие'
if ([System.Text.Encoding]::Default.WindowsCodePage -eq 1252) {$PromptText = $PromptText | ConvertEncoding 'windows-1251' -To 'UTF-16'}
$local:Selections = 1..2
While ($true) {
$Select = Read-Host -Prompt $PromptText
Switch ($Select) {
0 {exit}
1 {XMLSelection}
2 {ShowMessage -Message (1, 'Начало конфигурации') -Align 2; Write-Host $MultiAppKiosk.Configuration; ShowMessage -Message ('Конец конфигурации', 1, 'Для возврата в меню нажмите "Enter"', 1) -Align 2; Read-Host}
3 {$MultiAppKiosk.Configuration = $Null; Set-CimInstance -CimInstance $MultiAppKiosk; ShowMessage -Message (1, 'Выполнена команда удаления настроек', 1) -Align 2}
DEFAULT {ShowMessage 'Выбрано недопустимое значение'}
}
if ($Selections -contains $Select) {Clear-Host; ShowMessage (15, ' 0 - Выход', ' 1 - Выбрать XML-файл для установки', ' 2 - Показать текущую конфигурацию мультикиоска', ' 3 - Удалить настройки мультикиоска', 1)}
}
}
Function XMLSelection() {
Clear-Host
if (!(Test-Path -Path $PSScriptRoot'\XML')) {ShowMessage -Message (13, 'Не найден каталог', $('"'+$PSScriptRoot+'\XML"'), 1, 'Нажмите "Enter" для возврвта в предыдущее меню') -Align 2; Read-Host; Return}
$local:XMLList = @()
$XMLList += Get-ChildItem -Path $PSScriptRoot'\XML' -name -filter '*.xml'
if ($XMLList.Count -eq 0) {ShowMessage -Message (13, 'Не найдено XML-файлов в каталоге', $('"'+$PSScriptRoot+'\XML"'), 1, 'Нажмите "Enter" для возврвта в предыдущее меню') -Align 2; Read-Host; Return}
[int]$local:Indent = 13 - $XMLList.Count / 2; if ($Indent -lt 1) {$Indent = 1}
ShowMessage ($Indent, ' 0 - Вернуться в предыдущее меню')
for ($i=0; $i -le $XMLList.GetUpperBound(0); $i++) {Write-Host $(' '+($i+1)+' - '+$XMLList[$i])}
Write-Host
$local:PromptText = 'Выберите файл для установки'
if ([System.Text.Encoding]::Default.WindowsCodePage -eq 1252) {$PromptText = $PromptText | ConvertEncoding 'windows-1251' -To 'UTF-16'}
$local:Selections = 1..$XMLList.Count
$local:BackToPrevMenu = 0
While ($BackToPrevMenu -eq 0) {
$Select = Read-Host -Prompt $PromptText
Switch ($Select) {
0 {$BackToPrevMenu = 1}
{$Selections -contains $Select} {ShowMessage $('Дана команда на применение настроек из файла '+$XMLList[$Select-1]);
$local:Config = (Get-Content -encoding UTF8 -path $($PSScriptRoot+'\XML\'+$XMLList[$Select-1]) -Raw).Trim()
$local:GUIDs = [regex]::matches($Config, '{.+?}') | select -ExpandProperty Value | Get-Unique
foreach ($GUID in $GUIDs) {$Config = $Config -replace $('\'+$GUID),$('{'+[guid]::NewGuid()+'}')}
$Config = $Config -replace '&','&' -replace '<','<' -replace '>','>' -replace "'",''' -replace '"','"'
$MultiAppKiosk.Configuration = $Config
Set-CimInstance -CimInstance $MultiAppKiosk
}
DEFAULT {ShowMessage ('Выбрано недопустимое значение')}
}
}
}
MainMenu
Если вы хотите использовать мое решение, то сохраните в одну папку вышеуказанные скрипты с их оригинальными именами и в эту же папку положите файл «PsExec.exe». В этой же папке создайте папку «XML» и скопируйте в нее XML-файлы для настройки мультикиоска. Я буду использовать тот же файл, что и в первом способе.
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%\system32\notepad.exe" />
<App DesktopAppPath="C:\Program Files\Internet Explorer\iexplore.exe" />
<App DesktopAppPath="%windir%\system32\win32calc.exe" />
<App DesktopAppPath="%windir%\system32\mspaint.exe" />
<App DesktopAppPath="%ProgramFiles%\Windows NT\Accessories\wordpad.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%\Microsoft\Windows\Start Menu\Programs\Accessories\Wordpad.lnk" />
<start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Notepad.lnk" />
<start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Calculator.lnk" />
<start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Paint.lnk" />
<start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk" />
</start:Group>
</defaultlayout:StartLayout>
</StartLayoutCollection>
</DefaultLayoutOverride>
</LayoutModificationTemplate>
]]>
</StartLayout>
<Taskbar ShowTaskbar="true"/>
</Profile>
</Profiles>
<Configs>
<Config>
<Account>User</Account>
<DefaultProfile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}"/>
</Config>
</Configs>
</AssignedAccessConfiguration>
Немного об особенностях скрипта. Скрипт рассчитан на использование XML-файлов с кодировкой «UTF8», если вы хотите использовать кодировку «ANSI», то из параметра чтения файла уберите параметр «encoding UTF8». В папку «XML» необходимо размещать XML-файлы без замены символов, скрипт сам заменит спецсимволы на соответствующие обозначения. Чтобы не запутаться в GUID’ах привязки пользователей к профилям вы можете просто указывать номер или имя пользователя в фигурных скобках, все содержимое в фигурных скобках будет заменено на GUID’ы.
Использовать скрипт очень просто, запускаете и выбираете необходимый пункт. Для изменения текущей конфигурации на новую не обязательно удалять текущую, она будет перезаписана. Не забывайте создавать пользователей, которые прописаны в конфигурационном файле.
При просмотре текущей конфигурации мультикиоска в той же сессии, в которой она была применена, вместо спецсимволов будут отображены сочетания замещающих символов. После смены сессии (перезапуска скрипта), все спецсимволы будут отображены в оригинальном виде.
Шаг 7 – запечатывание системы
Мультикиоск работает, ну вот и все, казалось бы…
Если все идет по плану, значит вы чего-то не замечаете.
Не забываем, что нам еще нужно переводить систему из режима аудита в режим приветствия. Ну мы же к этому готовы, запускаем «Sysprep.bat», выбираем пункт 2, система запечатывается. Включаем устройство, система загружается, входим в учетную запись пользователя для которого настроен мультикиоск и не можем войти. После надписи «Добро пожаловать» появляется надпись «Выход из системы».
Сначала я хотел описать только решение проблемы, но позже решил описать шаги по выявлению проблемы и поиску наиболее простого решения т.к. наверняка многих читающих будут терзать смутные сомнения – «А если вот так…». Думаю, что описание различных экспериментов сэкономит вам значительную часть времени при желании найти другое решение. Чтобы информация была максимально точной, и чтобы лишний раз убедиться в отсутствии каких-либо ошибок, описание экспериментов я буду делать в формате «сделал – записал». Т.е. я проделаю описываемые эксперименты еще раз.
Эксперименты
Что же у нас получилось. В системе две учетные записи:
«Admin» – в группе «Администраторы»
«User» – в группе «Пользователи»
В режиме аудита мультикиоск работал, запечатали – не работает.
Эксперимент 1
Удаляем установленный пакет подготовки, в оснастке «Управление компьютером» удаляем пользователя «User» и создаем нового пользователя с именем «User», применяем пакет подготовки, заходим в учетную запись «User» – не работает. Заходим под именем «Admin», удаляем пользователя «User» из группы «Пользователи», добавляем в группу «Администраторы», заходим под именем «User» – не работает. Заходим под именем «Admin», удаляем пакет подготовки с мультикиоском, заходим под именем «User» – получилось войти, но естественно режим мультикиоска не работает т.к. был удален пакет подготовки.
Эксперимент 2
Заливаем образ системы – русифицированный в режиме аудита.
ОС загрузилась, нажимаем «Win+r», т.к. окно sysprep’а у нас закрылось автоматически выполняем команду «sysprep», в открывшемся окне запускаем «sysprep». Настройки sysprep’a в окне: «Переход в окно приветствия системы (OOBE)», «Подготовка к использованию», «Перезагрузка». Жмем «ОК» и ждем приветствия ОС. Отвечаем на вопросы при первой загрузке системы: «Continue in selected language?» – «русский»; регион – Россия; раскладка клавиатуры – Русская; добавить вторую раскладку клавиатуры – пропустить; «Давайте подключим вас к сети» – «Пока пропустить»; подключитесь к интернету – нет; лицензионное соглашение – принять; «Кто будет использовать этот компьютер» – «Test»; создание пароля – оставляю поле пустым; удобная работа на разных устройствах – нет; параметры конфиденциальности – принять. ОС загрузилась, в оснастке «Управление компьютером» создаем пользователя с именем «User», добавляем пакет подготовки. Результат – не работает.
Эксперимент 3
Заливаем образ системы – русифицированный в режиме аудита.
ОС загрузилась, подключаем систему к инету, выполняем команду «gpedit.msc» и в разделе «Центр обновлений Windows» включаем параметр «Включить рекомендуемые обновления через автоматическое обновление», на всякий случай перезагружаемся. В центре обновлений жмем «Проверить наличие обновлений» и перезагружаемся до тех пор, пока не будут установлены все обновления. Отключаем систему от интернета. Запускаем «sysprep» в графическом режиме и повторяем все действия, которые описаны в предыдущем шаге с запуска утилиты «sysprep» до добавления пакета подготовки. Результат – не работает.
Эксперимент 4
Заливаем образ системы – англоязычный в режиме аудита.
Запускаем «sysprep» в графическом режиме, запечатываем ОС с теми же параметрами что и во время эксперимента 2. При первой загрузке системы выбираем те же параметры что и в эксперименте 2, за исключением региональных и языковых параметров т.к. русского языка нет. Точно так же создаем пользователя «User» и добавляем пакет подготовки. Результат – работает. Т.е. проблема связана с локализацией.
Эксперимент 5
Заливаем образ системы – русифицированный в режиме аудита.
В оснастке «Управление компьютером» создаем пользователя «User», добавляем пакет подготовки, заходим в учетную запись «User», мультикиоск работает.
Выходим из учетной записи, заходим под учетной записью «Admin». Запускаем PowerShell с правами администратора, выполняем команду «Dism /online /Get-Intl» и видим «Язык пользовательского интерфейса по умолчанию: en-US».
Загружаемся с флэшки в WinPE, развернутая ОС у меня на диске E. Выполняем команду «Dism /image:E:\ /Set-UILang:ru-ru». Смотрим на результат, выполняем «Dism /image:E:\ /Get-Intl» и видим «Default system UI language: ru-RU».
Загружаемся в систему, входим в учетную запись «User», мультикиоск не работает.
Для четкой фиксации причинно-следственной связи появления проблемы попробуем еще раз сделать мультикиоск рабочим и нерабочим.
Загружаемся с флэшки в WinPE, развернутая ОС у меня на диске E. Выполняем команду «Dism /image:E:\ /Set-UILang:en-us». Смотрим на результат, выполняем «Dism /image:E:\ /Get-Intl» и видим «Default system UI language: en-US».
Загружаемся в систему, входим в учетную запись «User», мультикиоск работает.
Загружаемся с флэшки в WinPE, развернутая ОС у меня на диске E. Выполняем команду «Dism /image:E:\ /Set-UILang:ru-ru». Смотрим на результат, выполняем «Dism /image:E:\ /Get-Intl» и видим «Default system UI language: ru-RU».
Загружаемся в систему, входим в учетную запись «User», мультикиоск не работает.
Т.е. можно увидеть четкую зависимость работоспособности киоска от значения языка пользовательского интерфейса по умолчанию. Может есть еще какие-то факторы, влияющие на работоспособность мультикиоска?
Эксперимент 6
Для чистоты эксперимента перезаливаем систему. Заливаем образ системы – русифицированный в режиме аудита.
Запускаем «sysprep» в графическом режиме, запечатываем ОС с теми же параметрами что и во время эксперимента 2. Ждем приветствия ОС и отвечаем на вопросы: «Continue in selected language?» – «English (United States)»; регион – Россия; раскладка клавиатуры – Русская. Далее все параметры выбраны как и в эксперименте 2.
Смотрим параметры значения языка пользовательского интерфейса по умолчанию. Выполняем команду «Dism /online /Get-Intl» и видим «Default system UI language: en-US». В оснастке «Управление компьютером» создаем пользователя «User», добавляем пакет подготовки, заходим в учетную запись «User», мультикиоск работает.
Пробуем сломать киоск путем изменения языка пользовательского интерфейса по умолчанию. Заходим в пользователя «Test», который был создан при первой загрузке системы и включаем для него автоматический вход чтобы система не загружалась в учетную запись «User», сразу. Выполняем «netplwiz», выбираем пользователя «Test», снимаем флажок «Требовать ввод имени пользователя и пароля» и применяем параметры.
Загружаемся с флэшки в WinPE. Выполняем команду «Dism /image:E:\ /Set-UILang:ru-ru». Смотрим на результат, выполняем «Dism /image:E:\ /Get-Intl» и видим «Default system UI language: ru-RU».
Загружаемся в систему, пытаемся войти в учетную запись «User», мультикиоск работает. Т.е. его не получается сломать. А можно ли его таким образом заставить работать?
Эксперимент 7
Заливаем образ системы – русифицированный в режиме аудита.
Запускаем «Sysprep.bat», выбираем пункт 2. Загружаемся в систему, в оснастке «Управление компьютером» создаем пользователя «User», добавляем пакет подготовки, заходим в учетную запись «User», мультикиоск не работает.
Загружаемся с флэшки в WinPE. Выполняем команду «Dism /image:E:\ /Set-UILang:en-us». Смотрим на результат, выполняем «Dism /image:E:\ /Get-Intl» и видим «Default system UI language: en-US».
Загружаемся в систему, пытаемся войти в учетную запись «User», мультикиоск не работает.
Получается, что путем изменения настройки языка пользовательского интерфейса по умолчанию можно повлиять на работоспособность мультикиоска только когда система в режиме аудита или при первой загрузке после запечатывания системы. А это значит, что придется запечатывать систему с файлом ответов, в котором будет выбран язык системы английский, а дальше изменять настройки системы чтобы интерфейс был русским. Не очень хорошее решение. Может проблему можно решить способом установки языкового пакета или установкой дополнительных языковых пакетов?
Эксперимент 8
Заливаем образ системы – англоязычный в режиме аудита.
Подключаемся к интернету, в параметрах системы заходим в раздел «Language» выбираем «Add language», выбираем язык «Русский», нажимаем «Next», параметры установки оставляем по умолчанию, нажимаем «Install», после установки языкового пакета перезагружаем систему, теперь на русифицирована. Отключаем систему от интернета, запускаем «Sysprep.bat», выбираем пункт 2.
После загрузки системы в оснастке «Управление компьютером» создаем пользователя «User», добавляем пакет подготовки, заходим в учетную запись «User», мультикиоск не работает.
Эксперимент 9
Попробуем русифицировать систему до установки, в оффлайн режиме. Заодно будет краткий ликбез по локализации дистрибутива.
Беру флэшку с чистым оригинальным дистрибутивом – X21-96381. Она будет диском «E». Для монтирования образов создаю папки: «c:\Mount\Install», «c:\Mount\Winre», «c:\Mount\Boot». Беру набор пакетов локализации – X21-87814. И в папку «c:\Mount» копирую из него пакеты: «Microsoft-Windows-Client-Language-Pack_x86_ru-ru.cab», «lp.cab», «WinPE-Setup_ru-ru.cab». Запускаю консоль с правами администратора. Думаю, что дальнейшие команды будут понятны без комментариев.
Команды локализации
cd c:\mount
dism /Mount-Wim /WimFile:e:\sources\install.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:Install\Windows\System32\Recovery\Winre.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:\sources\boot.wim /index:1 /mountdir:Bootcode
dism /Image:Boot /Add-Package /PackagePath:lp.cabcode
dism /Image:Bootcode /Set-AllIntl:ru-ru
copy e:\sources\lang.ini Boot\sources\lang.inicode
dism /Unmount-Image /MountDir:Boot /Commitcode
dism /mount-wim /wimfile:e:\sources\boot.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:\sources\lang.ini Boot\sources\lang.ini /ycode
dism /Unmount-Image /MountDir:Boot /Commit
Загружаемся с флэшки, выбираем русский язык и ставим систему на чистый диск. Когда система просит выбрать регион нажимаем «Ctrl+Shift+F3». В оснастке «Управление компьютером» создаем пользователя «User», добавляем пакет подготовки, заходим в учетную запись «User», мультикиоск не работает.
Загружаемся с флэшки в WinPE. Выполняем команду «Dism /image:E:\ /Set-UILang:en-us».
Загружаемся в систему, пытаемся войти в учетную запись «User», мультикиоск работает.
Видимо дело не в методах добавления пакета, попробуем добавить дополнительные пакеты.
Эксперимент 10
Берем флэшку, которую мы подготовили на предыдущем шаге.
Берем пакет «Feat on Demand» – X21-87815. В папку «c:\Mount» копирую из него пакеты: «Microsoft-Windows-LanguageFeatures-Basic-ru-ru-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-OCR-ru-ru-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-Handwriting-ru-ru-Package~31bf3856ad364e35~x86~ ~.cab», «Microsoft-Windows-LanguageFeatures-TextToSpeech-ru-ru-Package~31bf3856ad364e35~x86~~.cab».
Берем пакет «Feat on Demand RDX Updt» – X21-99781. В папку «c:\Mount» копирую из него пакеты: «Microsoft-Windows-RetailDemo-OfflineContent-Content-Package~31bf3856ad364e35~x86~~.cab», « Microsoft-Windows-RetailDemo-OfflineContent-Content-ru-ru-Package~31bf3856ad364e35~x86~~.cab».
Запускаем консоль с правами администратора и выполняем команды:
Команды
cd c:\mount
dism /Mount-Wim /WimFile:e:\sources\install.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
Загружаемся с флэшки, выбираем русский язык и ставим систему на чистый диск. Когда система просит выбрать регион нажимаем «Ctrl+Shift+F3». В оснастке «Управление компьютером» создаем пользователя «User», добавляем пакет подготовки, заходим в учетную запись «User». Я получил черный экран, который долго висел, поэтому я выполнил горячую перезагрузку системы.
Удаляем пакет подготовки, заходим под пользователем «User», перезагружаем систему, добавиляем пакет подготовки, мультикиоск не работает.
Загружаемся с флэшки в WinPE. Выполняем команду «Dism /image:E:\ /Set-UILang:en-us».
Загружаемся в систему, пытаемся войти в учетную запись «User», мультикиоск работает.
Обход проблемы
Нормальные герои. Всегда идут в обход!
Различные способы установки пакетов локализации не решили проблему, значит придется при первой загрузке после запечатывания устанавливать язык «en-us», а после первой загрузки изменять языковые настройки.
Заливаем образ системы – русифицированный в режиме аудита.
В файле «Unattend.xml» в параметре вписываем «en-US», запускаем «Sysprep.bat», выбираем пункт 2 и смотрим, что у нас получилось. Экран приветствия на английском языке, мультикиоск – работает. Значит нужно добавить в «Unattend.xml» команду на изменение языка приветствия. А для этого необходимо выполнить команду «control intl.cpl,,/f:» с указанием конфигурационного файла, в котором будет прописано копирование текущих параметров в экран приветствия. Содержимое конфигурационного файла будет выглядеть вот так.
<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
<gs:UserList>
<gs:User UserID="Current" CopySettingsToSystemAcct="true"/>
</gs:UserList>
</gs:GlobalizationServices>
Т.к. будет копирование настроек текущего пользователя, то и выполнять команду нужно после входа пользователя в систему, а это значит, что нам понадобятся. Есть одно небольшое «но», выполнение будет после входа пользователя с правами администратора. И мне бы не хотелось создавать дополнительный файл, который будет необходим для успешного выполнения команды. Лучше все решение реализовать в едином файле — «Unattend.xml». Для этого просто нужно будет выполнить команду, которая создает конфигурационный файл. Думаю, что создам конфигурационный файл с помощью команды «echo» в среде «cmd», но в ней нужно экранировать угловые скобки циркумфлексом. Т.е. для создания конфигурационного файла получается вот такая команда.
echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>^<gs:UserList^>^<gs:User UserID="Current" CopySettingsToSystemAcct="true"/^>^</gs:UserList^>^</gs:GlobalizationServices^>>Config.xml
Но нам эту команду нужно поместить в XML, у которого свои требования к использованию спецсимволов:
В итоге для создания конфигурационного файла получилась вот такая команда для «FirstLogonCommands».
cmd.exe /c echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>^<gs:UserList^>^<gs:User UserID="Current" CopySettingsToSystemAcct="true"/^>^</gs:UserList^>^</gs:GlobalizationServices^>>"%TMP%\Config.xml"
Далее выполняем команду с использованием конфигурационного файла.
control intl.cpl,,/f:"%TMP%\Config.xml"
Далее удаляем ранее созданный файл и перезагружаем систему т.к. изменения вступят в силу после перезагрузки.
cmd.exe /c del "%TMP%\Config.xml" /q&shutdown /r /f /t 00
В итоге у меня получился вот такой файл ответов для sysprep’а.
Unattend.xml
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="specialize">
<component name="Microsoft-Windows-Deployment" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Path>reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\OOBE /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 HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\OOBE /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 ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>^<gs:UserList^>^<gs:User UserID="Current" CopySettingsToSystemAcct="true"/^>^</gs:UserList^>^</gs:GlobalizationServices^>>"%TMP%\Config.xml"</CommandLine>
<Description>CreateConfig</Description>
<Order>1</Order>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<CommandLine>control intl.cpl,,/f:"%TMP%\Config.xml"</CommandLine>
<Description>UseConfig</Description>
<Order>2</Order>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<CommandLine>cmd.exe /c del "%TMP%\Config.xml" /q&shutdown /r /f /t 00</CommandLine>
<Description>DelConfig</Description>
<Order>3</Order>
</SynchronousCommand>
</FirstLogonCommands>
</component>
</settings>
Проверяем…
Заливаем образ системы – русифицированный в режиме аудита.
Меняем файл Unattend.xml на новый, запускаем «Sysprep.bat», выбираем пункт 2 и смотрим, что у нас получилось. При первой загрузке экран приветствия на английском языке, система перезагружается. Экран приветствия на русском языке, мультикиоск работает.
Если у вас остались вопросы относительно настройки и лицензирования Windows 10 IoT Enterprise, обращайтесь по адресу mse@quarta.ru или на сайт quarta-embedded.ru.
Ответы на некоторые вопросы Вы можете найти в нашей вики или на нашем YouTube-канале
Автор статьи: Борисенков Владимир, технический эксперт компании Кварта Технологии.
- Главная
- О компании
- Новости
- Архив новостей
- Windows 10 IoT Enterprise 2019. Часто задаваемые вопросы (FAQ).
Windows 10 IoT Enterprise. Что это?
Windows 10 IoT Enterprise это самая полная версия операционной системы на базе ядра Windows 10 с расширенными возможностями по обеспечению безопасности и администрирования. Поскольку в техническом плане Windows 10 IoT Enterprise идентична Windows 10 Enterprise, то производитель устройств и конечный пользователь может использовать одни и те же инструменты для управления и администрирования как персональными компьютерами (ноутбуками) так и специализированными устройствами. Но необходимо отметить, что лицензирование и распространение Windows 10 IoT Enterprise и Windows 10 Enterprise отличаются. Дополнительно необходимо отметить, что Windows 10 IoT Enterprise доступна в LTSC и SAC вариантах.
Windows 10 IoT Enterprise 2019. Что нового?
Windows 10 IoT Enterprise 2019 – новая ступень в развитии уже хорошо зарекомендовавшей себя Windows 10 IoT Enterprise, с подробным описанием функционала которой можно ознакомиться здесь: www.komponenta.ru/embedded/products/windows-10/enterprise/
В дополнение к уже имеющемуся в предыдущей Windows 10 IoT Enterprise функционалу добавлены:
-
10-летняя поддержка уровня LTSC
- Поддержка Azure IoT Device Management
- Поддержка Windows AI Platform для Azure IoT Edge
- Улучшение в Assigned Access
Подробнее о новом функционал
Полный перечень новых функций
Windows 10 IoT Enterprise. Где использовать?
Встраиваемые операционные системы предназначены для создания различных узкоспециализированных устройств. К основным отличиям узкоспециализированных устройств от универсальных устройств можно отнести:
- На устройстве может работать одно или несколько приложений, необходимых для работоспособности устройства. Ограничения должны быть настроены через Assigned Access или Shell Launcher features.
- Устройство готово к использованию сразу «из коробки». Настройка ОС уже произведена.
- Ненужные функции, порты и периферия заблокированы на программном уровне.
- Производитель устройства обеспечивает полную техническую поддержку
- Производитель распространяет Windows 10 IoT Enterprise только вместе с готовым устройством в предустановленном виде.
Windows 10 IoT Enterprise. Запуск классических Windows-приложений.
Windows 10 наиболее совместимая версия для запуска классических Windows-приложений. Также доступны различные дополнительные инструменты для обеспечения совместимости:https://developer.microsoft.com/en-us/windows/desktop/app-compatibility
Windows 10 IoT Enterprise. Уровень сервисной поддержки.
Для Windows 10 IoT Enterprise 2019 доступны два варианта сервисной поддержки LTSC и SAC.
LTSC (Long Term Service Channel) – наиболее востребованный вариант для узкоспециализированных устройств. В рамках 10-летней поддержки уровня LTSC для операционной системы выпускаются только обновления безопасности. Функциональные обновления, добавляющие операционной системе различные новые функции или изменения интерфейса в рамках LTSC не выпускаются.
SAC (Semi-Annual Channel) – аналог настольной ОС для рабочих станций. Востребован в специфических сценариях, когда необходим браузер EDGE, голосовой помощник Cortana или Windows Store. Для SAC выпускаются как обновления безопасности, так и крупные функциональные обновления 2 раза в год.
Windows 10 IoT Enterprise. Лицензирование.
Модель лицензирования новой Windows 10 IoT Enterprise 2019 аналогична лицензированию предыдущих версий и максимально оптимизирована для производителей устройств. Стоимость лицензии зависит от типа используемого в устройстве процессора. Чем проще и слабее процессор, тем дешевле лицензия. Подробнее о процессорном лицензировании: www.komponenta.ru/embedded/products/windows-10/windows-10-iot-enterprise-2016/
Windows 10 IoT Enterprise. Системные требования.
Минимальные системные требования:
- 1 GHz faster X86 or X64 CPU
- 1 GB RAM (2 GB for 64-bit)
- 16 GB Storage (20 GB for 64-bit)
Подробнее
По всем вопросам, связанным с приобретением, обращайтесь по телефону: +7 (495) 150-2-150 или по e-mail: info@komponenta.ru |
Все новости
Специальная версия операционной системы Windows 10 Enterprise, предлагаемая Microsoft для использования на устройствах фиксированного назначения.
По возможности приобретения пожалуйста обращайтесь на soft@quarta.ru или в чат.
С каждым днем растет число устройств, автоматизирующих различные аспекты деятельности организаций, города, граждан, появляются абсолютно новые сценарии использования компьютерных устройств. Для таких решений не рационально использовать классические настольные версии операционных систем, в силу их высокой стоимости, изначальной ориентированности на универсальность применения и работу в обслуживаемой офисной среде. Поэтому, Microsoft уже более 20-ти лет предлагает отдельный класс операционных систем, ориентированных на специализированые решения, работающие в совершенно разных, в том числе и «полевых», условиях.
Устройства фиксированного назначения, использующие встраиваемые ОС Windows 10 IoT, широко используются в сфере торговли и банковской сфере. Это:
- POS-терминалы и POS-системы;
- платежные терминалы;
- инфо- и платежные киоски;
- банкоматы;
- кассы самообслуживания;
- постаматы;
- автоматические депозитарные машины (АДМ)
Устройства с операционными системами Windows 10 IoT также используются:
- в системах безопасности и видеонаблюдения (CCTV);
- для решения вопросов управления транспортными потоками;
- в системах пожаротушения и оповещения;
- в DigitalSignage (цифровых вывесках);
- в системах электронных очередей.
Другие области применения встраиваемых ОС:
системы автоматизации производства, тонкие клиенты, SCADA-системы, роботы, автоматизированные рабочие места различного назначения, телекоммуникационные системы, СКУД, системы хранения данных, медицинские устройства, infoteinment, бортовые системы и так далее.
В связи с COVID на первое место вышли системы автоматизированного контроля здоровья и перемещения граждан, аппараты ИВЛ, автоматика для оснащения больниц. Спектр огромен и ограничен только фантазией разработчика.
Компания Кварта Технологии продолжает оказывать услуги по настройке операционных систем, созданием образов ОС на заказ и помогать с настройкой промышленного тиражирования образов. Более подробнаяя информация доступна на соответствующей странице.
Ключевые преимущества перед «настольными» версиями
- В 2–3 раза дешевле настольной (обычной) Windows 10 Pro (в зависимости от используемого процессора);
- Полная совместимость с приложениями и устройствами для Windows 10;
- Не получает автоматических обновлений версий;
- Защищена от нежелательных действий персонала или злоумышленников (Функции Lockdown — см. ниже)
- Цена зависит от модели процессора в устройстве (мощнее — дороже, слабее — дешевле);
- Длительный жизненный цикл LTSC (гарантированные 10 лет поддержки и доступности каждой сборки);
- Готовый дистрибутив — экономите на обучении сотрудников и сборке собственного образа;
- Можно включить нулевой уровень телеметрии, на котором ОС отправляет минимум данных;
- Сертификат ФСТЭК (из всех версий Windows, только Windows 10 (IoT) Enterprise LTSC имеет актуальную сертификацию ФСТЭК).
Windows 10 IoT Enterprise, с точки зрения совместимости, не отличается от настольных Windows 10 Professional и Windows 10 Enterprise. Отличия — в лицензировании. Проще всего в этом убедиться — скачать и установить демоверсию (Выбрать нужно LTSC — дистрибутив). Версия не является ни «урезанной» ни «компонентной», более того, это самая полная версия Windows с точки зрения функционала.
Специальные возможности Windows 10 IoT Enterprise
Windows 10 IoT Enterprise обладает рядом встроенных функций, отличающих эту ОС от других версий и позволяющих сделать ваше устройство более безопасным и отказоустойчивым:
- Запуск основного приложения вместо оболочки ОС (Загрузка устройства непосредственно в основное приложение и блокировка доступа к интерфейсу ОС. Для киосков и подобных им решений);
- Допуск только к набору разрешенных приложений и каталогов (Идеально для автоматизированных рабочих мест сотрудников с несколькими рабочими приложениями);
- Жесткая блокировка образа ОС от изменений (Защищает образ ОС от вирусов, троянов и других необратимых изменений);
- Скрытие системных уведомлений (Никому не нравятся окна поверх контента, особенно на цифровых билбордах);
- Отключение анимации загрузки и лого Windows (Для скрытия признаков ОС и прочих загрузочных «красивостей»);
- Загрузка системы без сообщения об ошибках после некорректного завершения работы (Возможность загрузиться в safe mode полезна на десктопе, но не на промышленной системе);
- Блокировка подключаемых устройств по типу и ID (Будет невозможно подключить не разрешенные устройства или типы устройств, например — носители информации);
- Блокировка клавиш или их сочетания (Ctrl-Alt-Del и прочие сочетания блокируются на уровне системы, для предотвращения выхода в служебные интерфейсы и сворачивания окон);
- Отключение отображения экрана критического сбоя (Сбои драйверов иногда случаются, но вместо «синего экрана» можно настроить автоматическую перезагрузку).
Эти функции позволят защитить и брендировать устройство без дополнительного ПО и помогут обосновать невозможность соблюдения запрета на допуск иностранного ПО к госзакупкам, поскольку у имеющихся в реестре российского ПО аналогов этих возможностей пока нет. Подробнее про возможности Lockdown см. здесь.
Cкрипты автоматизации настройки образа ОС
Разработанный нашими техническими специалистами набор скриптов поможет вам упростить и автоматизировать настройку Windows 10, тем самым сэкономив время на подготовку защищенного образа операционной системы для вашего устройства.
Кроме того, скрипт подготовки к тиражированию позволит быстро создать загрузочный носитель из установочного образа Windows, для последующего развертывания на других устройствах в процессе производства.
Клиентам, которые заказывают Windows 10 IoT Enterprise, полный набор скриптов предоставляется бесплатно. Для остальных доступна облегченная версия.
Доступные версии
Выпуски |
Поддержка до |
Можно купить до |
Windows 10 IoT Enterprise LTSС 2021 (v.21H2) |
2031 |
2031 |
Windows 10 IoT Enterprise LTSС 2019 (v.1809) |
2028 |
2028 |
Windows 10 IoT Enterprise LTSB 2016 (v.1607) |
2026 |
2026 |
Windows 10 IoT Enterprise LTSB 2015 (v.1507) |
2025 |
2025 |
Редакции Windows 10 IoT Enterprise
LTSC (ранее — LTSB) — Long-Term Servicing Channel
Выпуск Windows 10 IoT Enterprise с долгосрочным обслуживанием (10 лет гарантированной поддержки и доступности для приобретения), без доставки версионных обновлений. 10 лет операционная система будет получать только обновления безопасности, поэтому у вас не будет сложностей с совместимостью ПО из-за новой функциональности. В таком выпуске нет UWP-приложений таких как Edge, Погода, Акции и т.п. Самый популярный выпуск среди производителей оборудования, с гарантированной поддержкой 10 лет.
В настоящий момент доступны дистрибутивы 1507, 1607, 1809.
SAC (ранее — CBB) — Semi-Annual Channel
Выпуск Windows 10 IoT Enterprise с «классической» автоматической схемой доставки версионных обновлений раз в полгода и поддержкой каждого обновления 18-30 мес. Для производителей оборудования, которым нужны регулярные обновления версий ОС и поддержка UWP. Всегда поставляется только последняя актуальная версия. Поддержка осуществляется 18 месяцев для весенних релизов и 30 месяцев для осенних релизов.
Лицензирование
Благодаря особенностям в лицензировании для корпоративных клиентов (Enterprise customer) указанных в Customer License Agreement (CLA) и Program Execution Guide (PEG), вы можете поставить оборудование и Windows Embedded/IoT заказчику в следующих 3-х вариантах:
- С предустановленным приложением и Windows Embedded/IoT (для всех вариантов);
- Без предустановленного приложения, только с Windows Embedded/IoT (только для поставки корпоративному клиенту);
- Без предустановленного приложения и без предустановленной* Windows Embedded/IoT (только для поставки корпоративному клиенту);.
*При поставке конечному заказчику устройства без предустановленной Windows Embedded/IoT, наклейки COA в любом случае должны быть поставлены вместе с устройством путем размещения на устройстве либо, если это невозможно или нерационально, на сопровождающих носителях или документации. Также, необходимо предоставить образ операционной системы.
Стоимость лицензии Windows 10 IoT Enterprise
Для покупки доступны четыре варианта лицензии: Windows 10 IoT Enterprise: Base, Entry, Value и High End. Стоимость зависит только от модели процессора, который установлен в вашем устройстве. Если в таблице нет вашего процессора — приобретайте лицензию High End. Любую модель CPU из списка можно использовать с более дорогой лицензией.
Модель процессора |
Лицензия / Отношение цены к цене Windows 10 Pro OEM |
|
NXP | i.MX 8 Series, i.MX 93 | Base / ~20% от цены Windows 10 Pro OEM * |
Intel |
Atom, Intel Processor, Pentium, Celeron, Core 3 (N350, N355) | Entry / ~30% от цены Windows 10 Pro OEM * |
AMD |
R1xxx, R2xxx, E1, E2, E-350, A4, A6, A9, G-Series, V10xx-V12xx, V20xx-V23xx, Athlon |
|
Qualcomm |
QCS6490, QCM6490, QCS5430, QCM5430 |
|
Intel |
Atom (C2750, C2730, C2550, C2530, C2350, C3338, C3958, S1260, S1240, S1220) Xeon (E3-1225, E3-1501M, E3-1501L, E-2124G, E-2324G, E-2414, E-2434, Xeon W-111xx, Xeon W-115xx) Core 3 (Кроме тех, что в Entry) , Core 5, Core Ultra 3, Core Ultra 5, Core i3, Core i5, Core M |
Value / ~50% от цены Windows 10 Pro OEM * |
AMD |
RX-Series, FX Models , A8, A10, A12, V13xx-V19xx, V24xx-V29xx, Ryzen 3, Ryzen 5 Ryzen Embedded 7000 (7645, 7600X), Ryzen Embedded 8000 (8645HS, 8640U), EPYC 3000 (3101, 3151) |
|
Qualcomm |
Snapdragon 850 , 7c, 7c Gen 2, 8c, 8cx, 8cx Gen 2, Microsoft SQ1, SQ2 |
|
Intel |
Core 7, Core Ultra 7, Core Ultra 9, Core i7, Core i9, Xeon |
High End / ~ 90% от цены Windows 10 Pro OEM * |
AMD |
Ryzen 7, Ryzen 9, Ryzen Embedded 7000, Ryzen Embedded 8000, EPYC 3000 FX models (FX 7500, FX 9370, FX 9590, FX 7600P) |
(*) Указано приблизительное соотношение цен для стандартных упаковок не менее 10 лицензий Windows IoT. Сравниваются цены международных (International) версий. Не является офертой.
Процессоры, не относящиеся к перечисленным моделям, попадают в группу High End.
Виртуализация
Если вам нужно развернуть Windows IoT Enterprise в виртуальной среде, вы можете приобрести специальные лицензии Windows IoT Enterprise Virtualization Only. Для расчета стоимости таких ОС обращайтесь к нам.
Минимальные системные требования Windows 10 IoT Enterprise
Характеристики |
Системные требования |
Процессор |
1 ГГц или SoC |
ОЗУ |
1 ГБ (32 бит) или 2 ГБ (64 бит) |
Место на диске |
16 ГБ (32 бит) или 20 ГБ (64 бит) |
Видеоадаптер |
DirectX 9 с драйвером WDDM 1.0 |
Дисплей |
800×600 |
Подробные системные требования на сайте Microsoft
Материалы в базе знаний
ВНИМАНИЕ! При выборе версии дистрибутива LTSC ориентируйтесь на совместимость конкретной сборки с процессорами! Помните, что Windows 10 IoT Enterprise 2019 — это всегда сборка 1809, а Windows 10 IoT Enterprise 2016 — это всегда сборка 1607. После приобретения бесплатный переход на другую сборку невозможен!
Наша видеоинструкция по установке Windows 10 IoT Enterprise
Истории успеха
Примеры решений и устройств на базе Windows IoT/Embedded от наших клиентов!
ПРОТЕСТИРУЙТЕ WINDOWS 10 IOT ENTERPRISE И НАЧНИТЕ ЭКОНОМИТЬ УЖЕ ЗАВТРА!
Windows 10 IoT Enterprise 2019 LTSC & SAC
Microsoft released the new Windows 10 IoT Enterprise 2019 LTSC (Long Term Servicing Channel, previously LTSB) version at the beginning of October 2018. This release includes all feature updates since the last Windows 10 IoT Enterprise LTSB release in 2016.
Furthermore, Microsoft renamed their CBB version, with feature updates every six months, to Windows 10 IoT Enterprise 2019 SAC (Semi-Annual Channel).
License & Pricing
The license and pricing model will stay the same as it was with the previous Windows IoT Enterprise release. There are three pricing models: Entry, Value and High-End, depending on the processor the OS will run on. Microsoft released and regularly updates a processor list where you can find the latest processor models and define in which category they belong.
find more information here to Windows 10 IoT: https://www.elbacom.com/w10enterprise/
Choose your platform to share this!
Related Posts
Windows 10 IoT Enterprise 2019 LTSC & SAC
Microsoft hat Anfang Oktober 2018 die neue Windows 10 IoT Enterprise 2019 LTSC (Long Term Servicing Channel, früher LTSB) Version veröffentlicht. Diese Version enthält alle Funktionsupdates seit der letzten Windows 10 IoT Enterprise LTSB-Version im Jahr 2016.
Darüber hinaus hat Microsoft seine CBB-Version, die alle sechs Monate Funktionsupdates enthält, in Windows 10 IoT Enterprise 2019 SAC (Semi-Annual Channel) umbenannt.
Lizenz & Preise
Das Lizenz- und Preismodell bleibt das gleiche wie bei der vorherigen Version von Windows IoT Enterprise. Es gibt drei Preismodelle: Entry, Value und High-End, abhängig vom Prozessor, auf dem das Betriebssystem laufen soll. Microsoft veröffentlicht und aktualisiert regelmäßig eine Prozessorliste wo Sie die neuesten Prozessormodelle finden und bestimmen können, in welche Kategorie sie gehören.
find more information here to Windows 10 IoT: https://www.elbacom.com/w10enterprise/
Choose your platform to share this!
Related Posts
Page load link
Go to Top
The LTSC version of Windows is designed for single-purpose devices with the key requirement that the functionality and features of the operating system do not change over time and are supported for a long time.
This is an archive article published 05/07/2020. Some information may no longer be up to date and in line with the current state. Please contact us in case of interest.
Let’s have a look at other reasons to use this operating system.
Stability — Updates Don’t Add New Functionality
LTSC (Long-Term Servicing Channel) versions automatically receive security updates, bug fixes, and reliability fixes, so-called qualitative updates. Updates don’t add any new functionality. Automatic updates can also be disabled completely.
Long-term Support
Windows 10 IoT Enterprise 2019 LTSC will be supported for 10 years after release, i.e. up to 9.1.2029. Support for Windows Embedded 8.1 will expire on July 11, 2023, while previous versions of Windows Embedded already expired.
Processor Dependent License Price
To put it simply, the less powerful the processor is, the lower and therefore cheaper the type of license. For example, if you are using an Intel Atom, you need an Entry license; for an Intel Core-i7, you must use a High-End license.
Language Packs
Windows 10 IoT Enterprise LTSC supports more than 30 different languages (MUI — multi-user interfaces). At least one language pack must be used, but you can have as many as you need, there is no limitation on the license.
Embedded Lockdown Features
These features are designed to restrict user access to the operating system. They allow setting up your embedded device to make the operating system behind your application completely invisible.
Unified Write Filter (UWF)
UWF intercepts all write attempts to a protected disk and redirects these write attempts to RAM (typical use) or temporary files on the disk. After the restart, the captured data is deleted. If some files on the disk need to be updated, UWF allows creating an exception for these files or directories and allow writing on them. For more information about UWF, see Unified Write Filter (UWF) feature.
Telemetry Level Zero
The desktop version of Windows 10 allows you to limit the data sent on Microsoft servers to the base level — 1. The LTSC version can limit the data even further, to level 0 — Security. For more information on telemetry, see Configure Windows diagnostic data in your organization.
Supported Processors
Embedded devices in our offer currently use Intel processors exclusively.
The current version, 2019 LTSC, supports processors from Braswell generation to and including 9th generation Core i3/i5/i7/i9-9xxx, Xeon E-21xx, and corresponding Intel Celeron, Pentium and Atom processors. Newer processors will be supported in the next version of LTSC.
The previous version, 2016 LTSB supports processors from Braswell up to and including 7th generation: Core i3/i5/i7/i9-7xxx, Core m3-7xxx, Intel Xeon E-21xx, corresponding Intel Celeron, Pentium and Atom processors and 8th generation of Intel Embedded Processors.
Does My Intel Processor Support Microsoft Windows® 10?
Windows Processor Requirements.
Windows Silicon Policy.
Our Aaeon, LexSystem, and TechNexion industrial embedded devices use Braswell and later processors and are fully supported by both the current 2019 LTSC version and the previous 2016 LTSB version.
Useful Links
Windows for IoT documentation.
Elbacom and https://www.10iot.cz/
What is Windows 10 IoT Enterprise LTSC 2019?
LTSC Version is Not Suitable for Everyone
Simply put, the license terms allow you to use LTSC version only on single-purpose devices running embedded application-specific software that provides the primary functionality of the device. The operating system must be configured in a way that does not allow the user of the device to use the device as a standard general-purpose PC. The operating system can only be delivered installed on the device.
SOS electronic is Microsoft’s contractual partner. If you buy an embedded device with a processor, RAM and SSD you can also buy Windows 10 IoT Enterprise 2019 LTSC license. We will install and configure the operating system as per your requirements within the Embedded Configuration Manager capabilities.
We will attach a COA (Certificate of Authenticity) sticker to the embedded device and enclose the printed Windows 10 IoT Enterprise license terms. If you are interested in studying the license terms in advance, we will be happy to send them to you. It is good to know that in case of damage or loss of the COA sticker, the device ceases to be licensed; there is no way to replace it, and you will need to purchase a new license — the COA sticker for the full price.
If you need more information about Windows 10 IoT Enterprise 2019 LTSC, do not hesitate to contact us. We are ready to help you at embedded@soselectronic.com.
Do not miss these articles
Do you like our articles? Do not miss any of them! You do not have to worry about anything, we will arrange delivery to you.
Date of publishing 05/07/2020.
When you issue article on your website, please give its source: https://www.soselectronic.com/en-gb/articles/sos-supplier-of-solution/why-use-microsoft-windows-10-iot-enterprise-2019-ltsc-2410