Альтернативные оболочки для Windows. Куда не приведёт Проводник?
Речь не о темах, которых во времена Windows XP и ранее было настолько много и они были настолько плохи, что Microsoft в итоге поддалась на уговоры IT сообщества и усложнила кастомизацию интерфейса. Эта статья именно про оболочки, про замену системному Проводнику.
Оболочка — это интерфейс взаимодействия пользователя с операционной системой. Существуют графические оболочки (графический интерфейс пользователя, GUI), текстовые (терминал, командная строка) и удалённые, которые могут варьироваться в зависимости от назначения и протокола взаимодействия машин. Для рабочих станций, то есть для компьютеров обычных людей сейчас повсеместно используются графические оболочки, да и на серверах они сегодня встречаются всё чаще. С ростом ресурсов их расход на GUI становится некритичным.
Если в Linux таких оболочек множество и все к этому привыкли, то под Windows известен лишь Проводник, а меж тем как современная ОС от Microsoft, так и любая предыдущая версия Windows позволяет без проблем использовать любой совместимый GUI.
Когда-то давно замена графической оболочки Windows производилась путём правки одной строчки в реестре. Это один из примеров того, что ОС для профессионалов не надо переделывать в ОС для широкого круга пользователей. Речь идёт всё о той же XP. В ранних её версиях не только GUI, но и загрузочные разделы определялись простым текстом в простом файле boot.ini. Школьники быстро освоили, что подправив одну строчку можно «убить ОС» и если boot.ini относительно быстро защитили, то запись shell в реестре использовалась злоумышленниками довольно долго. Даже не удивлюсь, если заменить Проводник на свою программу в XP можно таким образом до сих пор. Помните эпидемию «не убираемых» баннеров, так называемых винлоков?
Их зоопарк мог похвастаться несколькими путями реализаций блокировки, но среди прочих была и подмена Проводника.
Однажды мне попался компьютер, где в качестве оболочки использовался Total Commander . Проводник не запускался вовсе, как и должно быть в таком случае. Учитывая, что я сам в качестве файлового менеджера использую TC, данный пример заставил меня подумать о том, чтобы сделать подобное у себя. В итоге всё таки нет. TC у меня и так открыт постоянно, получается, что переход к такому решению, как в примере просто лишил бы Проводника и ничего нового не привнёс бы.
Когда-то их было много, потом лишь несколько.
Для этой статьи на виртуальную машину с Windows 10 была установлена альтернативная оболочка Aston. Вам не кажется, что её дизайн выглядит несколько устаревшим? Он не вписывается в современные реалии по одной простой причине — ей 10 лет. К настоящему моменту мне не удалось найти ни одной развивающейся альтернативы Проводнику, но почему так?
В отличии от тем оформления, которые может клепать каждый школьник десятками за раз, GUI — это серьёзный программный продукт, требующий работы профессионалов, которые дорого стоят. И во-первых этот продукт должен быть интереснее Проводника, а во-вторых он должен как минимум окупиться, а желательно ещё принести прибыль. И вот здесь альтернативщики от графических интерфейсов для Windows просто растеряли аудиторию после того, как сама Microsoft отнеслась иначе к своему продукту и стала делать упор на красоту в ущерб интуитивной понятности .
Красоту народ любит, а к элементам интерфейса мы уже привыкли. Нам вовсе не обязательно, чтобы кнопка выглядела, как кнопка.
Тот же Aston, по крайней мере последняя его версия в этом плане является неполноценной графической оболочкой. Если вы откроете какую-нибудь папку, то Aston без зазрения совести обратиться к Проводнику, чего уважающий себя GUI не должен делать:
Аналогично Астону закрылись и другие альтернативные проекты, в том числе KDE . Из операционных систем для широкого круга пользователей сегодня только Android может похвастаться разнообразием оболочек, которые там называются ланчерами (не путать с лончерами и лаунчерами )
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». Запускаю скрипт для запечатывания, ниже содержание скрипта и файла ответов.