- An overview of Windows 10 IoT
- What is Windows 10 IoT?
- Windows 10 IoT Editions
- Differences between Windows 10 IoT Core and Windows 10 IoT Enterprise
- Differences between Windows 10 Desktop and Windows 10 IoT Core
- Different features available on Desktop and IoT Core
- Differences in driver-supported areas
- Differences in available registry set
- Different commands supported
- IoT Edge Support for Windows 10 IoT
- Getting Started with Windows 10 IoT Enterprise
- What is Windows 10 IoT Enterprise?
- Why Do Customer Choose Windows 10 IoT Enterprise?
- Documentation Overview
- Hardware Guidance
- Quickstarts
- Kiosk Mode
- Advanced Lockdown Features
- Branding Features
- Device Management
- IoT Device Features
- Commercialization
- Additional Resources
- Windows 10 IoT Enterprise — секреты настройки для Embedded-сценариев
- Предисловие
- О чем же все это говорит?
- Какую бизнес-задачу решаем?
- Подготовка решения
- Шаг 1 – подготовка устройства
- Шаг 2 – установка Win 10 IoT
- Шаг 3 – сохранение образа системы
- Шаг 4 – установка драйверов
- Шаг 5 – русификация системы
- Шаг 6 – настройка питания
- Шаг 7 – отключение аварийного режима загрузки
- Шаг 8 – отключение сообщений об ошибках и всплывающих уведомлений
- Шаг 9 – настройка обновлений системы
- Шаг 10 – настройка запуска приложения
- Шаг 11 – настройка отображения загрузки системы
- Шаг 12 – установка и удаление ключа Windows
- Шаг 13 – запечатываем систему
An overview of Windows 10 IoT
Windows Containers are supported for commercial deployments on Windows Server, Windows IoT Server, Windows IoT Enterprise and Windows IoT Core. As of Windows October Update 2018 (Build 17763), Windows Containers can only be used with Windows Enterprise and Professional for dev/test purposes.
What is Windows 10 IoT?
Windows 10 IoT is a member of the Windows 10 family that brings enterprise-class power, security, and manageability to the Internet of Things. It leverages Windows’ embedded experience, ecosystem and cloud connectivity, allowing organizations to create their Internet of Things with secure devices that can be quickly provisioned, easily managed, and seamlessly connected to an overall cloud strategy.
Windows 10 IoT Editions
Windows 10 IoT comes in two editions. Windows 10 IoT Core is the smallest member of the Windows 10 operating system family. While only running a single app, it still has the manageability and security expected from Windows 10. By contrast, Windows 10 IoT Enterprise is a full version of Windows 10 with specialized features to create dedicated devices locked down to a specific set of applications and peripherals.
Differences between Windows 10 IoT Core and Windows 10 IoT Enterprise
While Windows 10 IoT Core and Windows 10 IoT Enterprise are similar in name, there are differences in what they offer as well as what they support. Below is a feature list that highlights edition differences.
FeatureВ /В Edition Windows 10 IoT Core Windows 10 IoT Enterprise User experience One UWP app in the foreground at a time (see IoT Shell documentation for app backstack handling) with supporting background apps and services. Traditional Windows Shell with Advanced Lockdown Features Headless supported Yes Yes App architecture supported UWP UI only Full Windows UI support (e.g. UWP, WinForms, etc) Cortana Cortana SDK Yes Domain join AAD only AAD and Traditional Domain Management MDM MDM Device Security Technologies TPM, Secure Boot, BitLocker, Device Guard, and Device Health Attestation TPM, Secure Boot, BitLocker, Device Guard and Device Health Attestation CPU Architecture support x86, x64, and ARM x86 and x64 Licensing Online Licensing Agreement and Embedded OEM Agreements, Royalty-free Direct and Indirect Embedded OEM Agreements Usage scenarios Digital Signage, Smart Building, IoT Gateway, HMI, Smart Home, Wearables Industry Tablets, Retail Point of Service, Kiosk, Digital Signage, ATM, Medical Devices, Manufacturing Devices, Thin Client
For minimum requirement details, please visit the Windows Hardware site.
If you’re interested in learning more about Point of Service, please visit the UWP docs on this topic.
Differences between Windows 10 Desktop and Windows 10 IoT Core
Different features available on Desktop and IoT Core
- Inbox Cortana is no longer available on Windows 10 IoT Core since version 1809 (17763). If you are looking to bring a voice-enabled device to market quickly, you can integrate Cortana support into the device using the preview of the Cortana Devices SDK.
- The FileOpenPicker API is not supported in Windows 10 IoT Core. To access local drives or removable storage, you can implement this in your own application.
- The Windows 10 IoT Core device will boot to the default app instead of a desktop-like PC. The purpose of this application is not only to provide you with a friendly shell to interact with upon first boot, but to also allow you to use the open-sourced code for this application so that you can use these features to plug and play your own custom application(s).
Differences in driver-supported areas
- Windows 10 Desktop has more supported drivers than Windows 10 IoT Core. To make the same device(s) work on Windows 10 IoT Core as on Desktop, you may need to build a driver from source for a Windows 10 IoT Core device or find another workaround, especially for ARM architecture.
- There is no out-of-the-box driver for libusb for Windows 10 IoT Core (ARM) — you will need to build from source to target the ARM architecture.
Differences in available registry set
- On desktop, there is an option to «Automatically hide scroll bars in Windows» that can be set to off. It is controlled by the following registry entry:
- There is no such registry on Windows 10 IoT Core devices by default. You will need to add a «Dynamic Scrollbars» register if you want.
- To enable hide scroll bars automatically in a UWP application, you can add the «DynamicScrollbars» register and set the value to «1» like this:
- The registry key must be set from the Default Account. If the ScrollViewer’s XAML setting is «Visible», the registry setting of 0 will force the scroll bar to appear regardless of whether there is sufficient content to have the scroll appear in the UI. A registry setting of 1 will keep the scroll bar hidden until there is sufficient content.
- Lastly, if the ScrollViewer XAML’s setting is «Auto» then the registry setting of 0 will only show the full scroll bar when there is enough content to display the scroll bar. When the registry setting is 1, the scroll bar will appear then when there is enough content or hidden if there is no content.
Different commands supported
- The PowerShell Remove-AppxPackage command works on Desktop but not on Windows 10 IoT Core.
- Not all folders on your device are accessible by Universal Windows Apps. On Windows 10 IoT Core, you can use the FolderPermissions tool to make a folder accessible to a UWP app. For example, run FolderPermissions c:\test -e to give UWP apps access to c:\test folder. However, this is not available on Desktop.
Commands shown in this post may change as time goes on since Windows 10 IoT Core keeps updating.
IoT Edge Support for Windows 10 IoT
To learn more about IoT Edge support for Windows 10 IoT, please read more about «Operating Systems» in the Azure IoT Edge article here.
Getting Started with Windows 10 IoT Enterprise
This article will give you an overview of the product and guide you through how to get started with Windows 10 IoT Enterprise.
What is Windows 10 IoT Enterprise?
Windows 10 IoT Enterprise is a full version of Windows 10 that delivers enterprise manageability and security to IoT solutions. Windows 10 IoT Enterprise shares all the benefits of the worldwide Windows ecosystem. It is a binary equivalent to Windows 10 Enterprise, so you can use the same familiar development and management tools as client PCs and laptops. However, when it comes to licensing and distribution, the desktop version and IoT versions differ.
Windows 10 IoT Enterprise offers both LTSC and SAC options, and OEMs can choose the one they need for their devices. For more information on how to reach out to a Windows IoT Distributor or how to purchase a license, review Licensing & Usage.
Why Do Customer Choose Windows 10 IoT Enterprise?
There are three main reasons why customers choose to develop with Windows 10 IoT Enterprise:
- Productive — Leverage existing knowledge to build and manage Windows 10 IoT Enterprise devices with powerful tools and technologies to quickly unlock data and drive digital transformation.
- Trusted — Windows 10 IoT Enterprise helps you build IoT solutions that you can trust, keeping your devices, data, and identities secure and giving you peace of mind.
- Smart — Windows 10 IoT Enterprise helps you connect your devices to each other, your network, and the cloud, so you can use data to drive real business insight and create new business opportunities
If you are building any kind of OEM style appliance, such as a point-of-sale or retail device, industrial automation equipment, digital signage, medical equipment or any appliance with a screen, Windows 10 IoT Enterprise is the solution for you.
See how our customers are using Windows 10 IoT Enterprise to accomplish their business goals.
Documentation Overview
This documentation set will cover the technical breakdown of what’s included when you choose to use Windows 10 IoT Enterprise.
Hardware Guidance
This section provides insight into the hardware needed to run Windows 10 IoT Enterprise as your device’s OS.
Quickstarts
This section provides quick tutorials on how to get started with Windows 10 IoT Enterprise.
Kiosk Mode
This section walks users through the features and functionalities of Kiosk Mode and how to enable those features on Windows 10 IoT Enterprise.
Advanced Lockdown Features
This section highlights how to create a lock-down environment with Windows 10 IoT Enterprise OS features.
Branding Features
This section reviews how to create a custom user-experience that highlights your brand. Articles include:
Device Management
Learn more about the device management solutions you can take advantage of with Windows 10 IoT Enterprise.
IoT Device Features
This section gives an overview of many of the built-in functionalities of Windows 10 IoT Enterprise devices.
Commercialization
Learn how to commercialize your Windows 10 IoT Enterprise devices.
Additional Resources
These resources provide additional information and support to our customers and partners.
Windows 10 IoT Enterprise — секреты настройки для Embedded-сценариев
Предисловие
Наверно Вы видели банкоматы, информационные киоски, рекламные панели, на которых отображается ошибка или уведомление системы. Если Вы не видели подобные общественные устройства «живьем», то Вы легко сможете найти подобные фотографии в интернете если поищете картинки по словам «банкомат ошибка windows». А однажды уведомление системы появилось в прямом эфире во время прогноза погоды, фото можно найти по словам «уведомление windows в прямом эфире». Ради интереса еще можете поискать «самый большой синий экран».
О чем же все это говорит?
— Вы любите кошек?
— Нет
— Вы просто не умеете их готовить!
Для специализированных устройств Майкрософт предлагает использовать Windows 10 IoT Enterprise, которая отличается от Windows 10 Enterprise только отсутствием универсальных приложений. Соответственно, с технической точки зрения Win 10 IoT Enterprise является настольной операционной системой, которая подразумевает взаимодействие с пользователем. Но на специализированных устройствах взаимодействия с пользователем не должно быть т.к. порой даже нет пользователя в привычном его понимании, особенно это касается рекламных панелей.
При подготовке специализированного устройства некоторые технические специалисты забывают о вышеуказанном нюансе совсем или забывают отключить какую-либо категорию уведомлений. Данная статья написана чтобы напомнить о некоторых особенностях настройки Windows для специализированных решений. В данной статье мы рассмотрим подготовку решения для одной бизнес-задачи.
Все настройки будут описаны для Win 10 IoT Enterprise 2016 LTSB, демо-версию которой можно скачать здесь.
Какую бизнес-задачу решаем?
Как-то раз я приехал в пункт самовывоза одного онлайн магазина. В данном магазине продавцы только выдавали товар или давали его посмотреть, а заказ нужно было оформлять только на сайте магазина. Чтобы можно было оформить заказ прямо в пункте самовывоза, в зале самовывоза было установлено множество ПК. Сами ПК были спрятаны, был только монитор и мышка, на экране была открыта специализированная база магазина, в которой можно было найти товар и оформить заказ и экранная клавиатура.
Рассмотрим подготовку аналогичного решения, которое будет предназначено для навигации по сайту www.quarta-embedded.ru. Предполагаемые условия использования – без источника бесперебойного питания и с минимальным техническим обслуживанием.
Подготовка решения
Шаг 1 – подготовка устройства
В качестве устройства был взят обычный ПК, с жестким диском 120 ГБ, оперативной памятью 4 ГБ. Режим загрузки ОС – Legacy.
Т.к. у нас устройство будет использоваться без источника бесперебойного питания нужно обязательно предусмотреть внеплановое отключение питания. Т.е. устройство должно само включаться при появлении питания, для этого необходимо соответствующим образом настроить BIOS устройства. Необходимые пункты в BIOS’е можно найти по интуитивно-понятным названиям, у меня это «Advanced > Power-On Options > After Power Loss», выставляем «On». Но если Вы хотите, чтобы при включении устройство оставалось выключенным, когда его выключили намеренно, то установите «Previous State».
Шаг 2 – установка Win 10 IoT
Установка Win 10 IoT Enterprise ничем не отличается от установки Win 10 Enterprise, поэтому не вижу особого смысла описывать установку. Я буду устанавливать «Win 10 IoT Enterprise 2016 LTSB x32» без подключения к интернету, чтобы в систему не «прилетело» ничего лишнего. При первой загрузке создал пользователя Admin.
Шаг 3 – сохранение образа системы
Что, не ждали такого поворота? Только установили систему и сразу сохраняем образ. При подготовке решения желательно периодически сохранять образ системы на тот случай если вдруг что-то пойдет не так. Тогда не нужно будет делать настройку системы сначала.
Когда мы говорим о создании образа мы затрагиваем вопрос тиражирования, но он настолько широкий, что ему можно посвятить отдельную статью и не одну, поэтому в данной статье я не буду подробно описывать данный вопрос.
Для создания технологического (промежуточного) образа я запечатаю систему командой
и создам wim образ системного тома с помощью утилиты DISM.
Важно — если Вы пойдете тем же путем, то после разворачивания такого образа не забудьте скопировать содержимое каталога «Windows\System32\Recovery» на первый том в папку «Recovery\WindowsRE». И сделать это нужно до загрузки ОС т.к. после загрузки ОС каталог «Windows\System32\Recovery» уже будет пустым. У меня это реализовано следующим образом:
Обратите внимание, что после запечатывания система будет автоматически входить во встроенную учетную запись администратора. И теперь автоматически будет запускаться sysprep. Чтобы это окно мне не мешало, я добавил в shell:startup скрипт с одной единственной командой
Чтобы не забыть удалить скрипт, я сразу сделаю скрипт для запечатывания, в котором будет прописана команда для очистки автозапуска.
Мне ведь все равно нужно будет запечатывать систему в oobe режиме.
Все технологические файлы я буду размещать в папке C:\Sysprep
Шаг 4 – установка драйверов
Как ни странно, но некоторые жалуются, что после установки Win 10 «драйверы не установились сами». Спешу Вас огорчить, само ничего не бывает, драйверы необходимо устанавливать. В системе идет некий набор стандартных драйверов, но вряд ли со стандартным набором драйверов можно будет использовать все возможности оборудования. Лучше всего если Вы сами установите наиболее подходящие драйверы для Вашего устройства. Windows может автоматически загружать драйверы из специального хранилища Майкрософта и устанавливать их, но не обязательно что там будут все необходимые драйверы или что это будут подходящие драйверы. Драйвер, который система установит автоматически может привести к сбою системы. Что же делать если Вы оказались в ситуации, когда нужно предотвратить такую автоматическую установку драйвера? Есть 2 варианта:
1. Отключить службу обновления
net stop wuauserv – команда остановки службы
sc config wuauserv start=disabled – изменить режим запуска службы на «Отключено»
Но в таком случае система не будет получать какие-либо обновления вообще
2. Отключить установку конкретного драйвера в групповых политиках
Для этого нужно:
Открыть редактор групповых политик командой gpedit
Перейти в раздел «Конфигурация компьютера\Административные шаблоны\Система\Установка устройства\Ограничение на установку устройств». Англоязычный вариант ветки «Computer Configuration\Administrative Templates\System\Device Installation\Device Installation Restrictions»
В данном разделе Вы сможете запретить установку драйвера по конкретному классу или ID оборудования. Для предотвращения установки других драйверов НЕ нужно устанавливать флажок «Также применить для соответствующих устройств, которые уже были установлены» «Also apply to matching devices that are already installed», иначе Вы сделаете использование устройства невозможным.
Т.к. у меня экспериментальное решение и драйверы особого значения не имеют, я не буду целенаправленно устанавливать драйверы. После подключения к интернету система нашла драйвер на некоторые устройства.
Шаг 5 – русификация системы
Думаю, что это действие весьма простое и его не нужно подробно описывать. Скажу, что для корректного отображения кириллицы я указал русский язык для программ, которые не поддерживают Юникод. Указал расположение, хотя в моем случае это не нужно. И попутно можно изменить часовой пояс т.к. по умолчанию UTC -8. Установил русскоязычный языковой пакет, когда я устанавливал языковой пакет через интернет, мне показалось это долгим, поэтому я установил его с помощью предварительно скачанного пакета «Microsoft-Windows-Client-Language-Pack_x86_ru-ru.cab», установил командой
После установки переключил основной язык системы на русский и включил опцию копирования языковых параметров для экрана приветствия и новых учетных записей.
Вот и все, русский язык добавлен, пожалуй, можно сохранить образ системы…
Шаг 6 – настройка питания
Наше устройство не должно засыпать и отключать монитор, поэтому нужно настроить питание соответствующим образом. Питание можно настроить с помощью скрипта:
Шаг 7 – отключение аварийного режима загрузки
Важный момент – если у нашего устройства будет 2-3 раза подряд некорректное завершение работы, то система загрузится в режим восстановления, а этого допускать нельзя. Поэтому отключаем этот режим загрузки. Это можно сделать с помощью команды
Обратите внимание, что данная настройка прописывается в bcd хранилище, которое находится на разделе восстановления. Я не сохраняю раздел восстановления при сохранении образа системы, следовательно после разворачивания системы данная настройка будет в исходном состоянии т.к. будет новое bcd хранилище. Чтобы не забыть про данную настройку я добавлю ее в скрипт запечатывания в oobe режиме.
Шаг 8 – отключение сообщений об ошибках и всплывающих уведомлений
Чтобы система не выдавала сообщения об ошибках, запрос об отправке отчетов об ошибках, сообщения о проблемах с оборудованием, все это нужно отключить. Службу политики диагностики можно настроить в групповых политиках:
Конфигурация компьютера\Административные шаблоны\Система\Диагностика
Диагностика: настройка уровня выполнения сценария — Включить «Только обнаружение и диагностика»
Но мне проще все настроить с помощью одного reg файла.
Всплывающие уведомления можно настроить в групповых политиках «Конфигурация пользователя\Административные шаблоны\Меню «Пуск» и панель задач\Уведомления». Но мне проще включить режим «Не беспокоить», его можно включить в графическом интерфейсе, в центре уведомлений и в реестре. Т.к. эта настройка относится к конкретному пользователю, то и выполнять его нужно под целевым пользователем. Поэтому создаем пользователя, под которым и будет выполняться приложение для общественного использования. Пока этот пользователь будет в группе администраторы, для удобства настройки. Чтобы не было проблем с названием группы русская/английская, то получу название группы по SID’у.
И включаем режим не беспокоить.
Чтобы не забыть исключить пользователя из группы администраторы, добавлю команду на исключение в скрипт запечатывания.
Шаг 9 – настройка обновлений системы
Не помешает установить все актуальные обновления на момент подготовки системы. Настроить обновления Вы можете исходя из специфики работы Вашего устройства. Можно отключить установку всех обновлений или обновлений драйверов, как это сделать мы рассмотрели в шаге 4. А можно отключить установку обновлений системы и оставить обновление драйверов.
Но также возможна ситуация, когда нужно устанавливать обновления системы, но какое-то конкретное обновление выводит систему из строя. В этой ситуации можно запретить установку конкретного обновления. Это можно сделать с помощью утилиты wushowhide.diagcab, которую можно найти здесь.
В групповых политиках Вы можете найти множество детализированных настроек по установке обновлений. «Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Центр обновления Windows»
Т.к. мне обновления не нужны я их отключу полностью:
Здесь я в очередной раз сохраню образ системы.
Шаг 10 – настройка запуска приложения
Навигация по сайту quarta-embedded.ru будет в IE, чтобы убрать доступ к адресной строке и настройкам можно включить полноэкранный режим в групповых политиках. «Конфигурация пользователя > Административные шаблоны > Компоненты Windows > Internet Explorer > Включение полноэкранного режима». И нужно запретить закрытие IE «Конфигурация пользователя > Административные шаблоны > Компоненты Windows > Internet Explorer > Меню браузера > Меню «Файл»: отключить закрытие окон браузера и проводника».
Для запуска приложения вместо оболочки системы будем использовать специальное средство запуска приложений – ShellLauncher. С его помощью можно:
1. Назначать запуск конкретного приложения для конкретного пользователя или группы пользователей
2. Контролировать работу запущенного приложения, при закрытии запущенного приложения можно:
- a. Перезапустить приложение
- b. Перезагрузить систему
- c. Выключить систему
- d. Не предпринимать никаких действий
Сначала нужно добавить ShellLauncher как компонент, это можно сделать в графическом интерфейсе «Панель управления > Программы > Включение и отключение компонентов Window», раздел «Блокировка устройства». Настроить запуск программ можно в ветке реестра «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Embedded\Shell Launcher». настройка запуска программ производится по SID’ам пользователей, SID’ы можно узнать с помощью утилиты whoami. Для включения ShellLauncher’а нужно просто заменить в реестре запуск стандартной оболочки на запуск ShellLauncher’а. И еще маленький нюанс, ShellLauncher не влияет на размеры и положение окна запущенной программы, а IE хотелось бы запустить развернутым на весь экран. Поэтому настраиваем режим запуска IE, опять же под пользователем User, заодно запрещаем вызов контекстного меню IE, чтобы пользователь ничего не испортил.
Теперь настраиваем ShellLauncher, опять же мне все удобней делать с помощью консоли…
И, в качестве примера, можно назначить запускаемую оболочку по умолчанию, когда пользователю не назначено никаких приложений.
И включаем Shell Launcher
Шаг 11 – настройка отображения загрузки системы
В предыдущих версиях Windows можно было установить свои логотипы, которые отображались бы при загрузке системы, сейчас есть только две опции вкл. и выкл. Отключить процесс отображения загрузки можно в bcd хранилище, эти команды я выполню сразу и добавлю в скрипт запечатывания.
Также можно скрыть процесс входа пользователя в систему.
Теперь включаем автоматический вход пользователя User, это можно сделать с помощью команды netplwiz. Перезагружаемся и смотрим что получилось, отображения хода загрузки ОС нет, отображения входа пользователя в систему нет. Только, непосредственно перед входом в систему на несколько секунд появляется значок Win и анимация в виде шариков, но это потому, что ОС в режиме аудита, после запечатывания в режиме oobe этого не будет. Автоматически запустился IE с адресом www.quarta-embedded.ru, чуть позже появилась вкладка microsoft.com, ну ничего, нужно будет добавить в файл ответов запечатывания команду на изменение настроек в реестре
Вот здесь я опять сделаю образ системы.
Шаг 12 – установка и удаление ключа Windows
Перед установкой ключа нужно отключить ПК от интернета, чтобы система не активировалась. Можно добавить ключ и сразу же его можно удалить, чтобы никто не смог его вытащить. При этом система все равно сможет активироваться.
Шаг 13 – запечатываем систему
Чтобы система не задавала вопросов при первой загрузке после запечатывания в oobe режиме, я использую файл ответов, предварительно подготовленный в утилите «Windows System Image Manager». Запускаю скрипт для запечатывания, ниже содержание скрипта и файла ответов.