Русский
Русский
English
Статистика
Реклама

Windows 10

Security Week 45 тандем уязвимостей в Windows 10 и Chrome

02.11.2020 16:19:26 | Автор: admin
На прошлой неделе команда Google Project Zero раскрыла детали уязвимости в Windows 10, которая позволяет атакующему получить системные привилегии на компьютере жертвы.

Удивительно в проблеме то, что она использовалась в реальной атаке в комбинации с другой, также недавно найденной уязвимостью в браузере Google Chrome. Там нашли ошибку в обработчике шрифтов FreeType (уже закрытую), которая позволяла совершить побег из песочницы. Пара уязвимостей, соответственно, делала возможным такой сценарий: жертву заманивают на зараженную веб-страницу, злоумышленники запускают код за пределами защищенной среды браузера, а уязвимость в Windows дает им полный контроль над системой.

Этот сценарий умозрительный: детали самой атаки Google не раскрывает. При этом команда Project Zero применила правило раскрытия данных об уязвимостях нулевого дня и дала Microsoft всего семь дней на выпуск патча. На момент публикации заплатки для Windows еще нет: его, скорее всего, включат в регулярный набор обновлений, запланированный на 10 ноября. По традиции, произошел довольно едкий обмен мнениями: в Microsoft считают, что безопасники Google могли потерпеть с публикацией, в Project Zero уверены, что стимулируют вендоров быстрее выпускать патч возможно, даже вне стандартного расписания.




Источники
Баг в Windows 10: статья ArsTechnica, техническая информация.
Уязвимость в Google Chrome: технические данные и обсуждение в багтрекере Project Zero.

Уязвимость CVE-2020-117087 затрагивает как минимум Windows 10 и Windows 7. Она присутствует в одной из системных функций для шифрования данных. Ошибка в обработке информации вызывает переполнение буфера и создает условия для запуска произвольного кода с системными привилегиями. В технической статье Project Zero показана логика работы уязвимой функции в псевдокоде, а также приложен PoC-скрипт, вызывающий падение системы.

В свою очередь, уязвимость в браузере Chrome, скорее всего, затрагивает и другие браузеры на движке Blink. Возможно, не только браузеры: ошибку нашли в коде сторонней библиотеки. Интересно, что в Microsoft не подтверждают активную эксплуатацию уязвимости в Windows, в то время как в Google считают иначе. Если реальная атака действительно имела место (информация о ней не раскрывается), то в любом случае ее начальным этапом был браузер Chrome. Патч уязвимости в библиотеке FreeType сделал этот конкретный метод атаки невозможным. Что, конечно, не исключает вероятность эксплуатации уязвимости в Windows другими способами.

Что еще произошло:



Эксперты Лаборатории Касперского опубликовали отчет о DDoS-атаках в III квартале этого года. Общее количество кампаний заметно снизилось по сравнению с предыдущим периодом, в котором зафиксировали аномально высокую активность киберпреступников, связанную, очевидно, с пандемией.

В компании Sophos сообщают о методе фишинга паролей к учетным записям Facebook, который пытается обойти двухфакторную аутентификацию. Пользователям предлагают (под угрозой удаления страницы) оспорить якобы поступившую жалобу на нарушение авторских прав. На поддельной странице для входа в аккаунт предлагают ввести логин, пароль и одноразовый код для входа в аккаунт.



В Финляндии утекли данные как минимум 300 клиентов психотерапевтического центра Vaastamo. Часть записей попала в общий доступ, некоторым пациентам рассылают требования выкупа примерно в 200 евро в криптовалюте и угрожают опубликовать чувствительную информацию. До этого киберпреступники пытались традиционным путем получить деньги от пострадавшей организации с нее требовали почти полмиллиона евро.

Чуть менее опасный вариант использования личных данных атака на клиентские аккаунты в сети ресторанов. Учетные записи некоторых клиентов угнали, скорее всего, методом credential stuffing: злоумышленники смогли подобрать пароль, так как он использовался в других, уже взломанных сервисах. Результат: потеря значительных сумм, так как от имени клиентов поступили крупные заказы. Киберпреступники буквально работали за еду.

В релизе WordPress 5.5.2 закрыли критическую уязвимость, позволявшую получить контроль над непропатченным веб-сайтом. Это нечастый случай серьезной проблемы в коде CMS, а не сторонних плагинов.
Подробнее..

Перевод Microsoft планирует крупное обновление пользовательского интерфейса Windows 10

31.10.2020 14:22:02 | Автор: admin

В следующем году Microsoft хочет освежить пользовательский интерфейс Windows 10.

Источник: MicrosoftИсточник: Microsoft
  • В 2021 году ожидается большое обновление пользовательского интерфейса для Windows 10;

  • Проект носит кодовое название Sun Valley;

  • Ожидаются улучшения в Проводнике, Пуске и режиме планшета.

Microsoft готовит крупное обновление ОС для Windows 10 в 2021 году, которое, по информации источников, принесет с собой значительное обновление дизайна пользовательского интерфейса Windows. Заку Баудэну (Zac Bowden) сообщили, что Microsoft планирует обновить многие элементы пользовательского интерфейса: меню Пуск, Центр уведомлений и даже Проводник с использованием современного дизайна, улучшенной анимации и новых функций.

Проект пользовательского интерфейса имеет внутреннее название "Sun Valley" (Солнечная долина), и ожидается, что будет выпущен в рамках релиза Windows 10 "Cobalt" (Кобальт), запланированного на сезон праздников 2021 года. Внутренняя документация описывает проект как "оживление" и адаптацию опыта работы на Windows к современным требованиям, чтобы соответствовать ожиданиям клиентов в мире, управляемом другими современными и легкими платформами.

За последние пару лет Windows 10 оставалась почти такой же, практически не меняясь в дизайне или наборе предоставляемых функций. Многие другие платформы на рынке претерпели полный редизайн или обновление пользовательского интерфейса за последние пять лет. И, хотя Windows 10 претерпела незначительные изменения в дизайне с введением Fluent Design, мы не видели значительного обновления или переосмысления его пользовательского интерфейса.

Над проектом "Sun Valley", по-видимому, трудится команда "Windows Devices and Experiences" под руководством директора по продуктам Пэноса Паная, возглавивший указанное подразделение еще в феврале. В мае Microsoft объявила, что компания будет реинвестировать в Windows 10 в период до 2021 года, и источники Зака сообщают, что "Sun Valley" является результатом этого реинвестирования.

Чего же ожидать?

Источник: Windows CentralИсточник: Windows Central

Еще слишком рано говорить о том, что именно будет обновлено касательно проекта "Sun Valley", но источники говорят, что следует ожидать появления нового меню "Пуск" и Центра уведомлений, вероятно, основанных на тех же функциях, что и в Windows 10X, но адаптированных для настольных компьютеров. Microsoft также работает над обновленной панелью задач, созданной с использованием обновленного кода, и улучшенным пользовательским интерфейсом для устаревшего проводника.

Что касается пользователей планшетов, Заку сообщили, что на подходе также улучшенная анимация и более плавная работа ОС. Мы уже знаем, что Microsoft перерабатывает сенсорную клавиатуру и средство выбора эмодзи, так как эти изменения уже представлены на канале "Dev" для инсайдеров. И Microsoft продолжит это "рискованное предприятие" скругления углов всего пользовательского интерфейса, включая окна приложений и другие области оболочки.

Источники также сообщают, что следует ожидать более широкого внедрения WinUI в оболочке Windows и встроенных приложениях, что даст едва различимые, но важные изменения в дизайне. Кроме того, ожидается, что больше областей классического пользовательского интерфейса получат поддержку темной темы, чтобы пользовательский интерфейс Windows выглядел и ощущался более согласованным.

Обновленный дизайн будет развитием Fluent Design, а не полным редизайном ОС. Microsoft не представляет новый язык дизайна с выходом "Sun Valley", а просто пытается обновить, переориентировать текущий язык на настольные системы и более последовательно применить его во всей ОС, что в общем-то является большим подвигом для устаревшего рабочего стола Windows.

Когда выход?

Источник: Windows CentralИсточник: Windows Central

Важно подчеркнуть, что Microsoft может сократить или отложить релиз. Вероятно, что-то из запланированного не доведут до конечного продукта, поскольку такова природа разработки Windows и причина, по которой Microsoft не делает никаких анонсов заранее. Но это то, что Microsoft хочет предоставить клиентам Windows 10 в следующем году.

Microsoft надеется, что большая часть этой работы будет выполнена к концу семестра разработки Cobalt, который завершится в июне 2021 года. Затем Microsoft подпишет RTM-версию билда, отправит ее OEM-производителям и начнет тестирование в бета-канале в качестве назначенного выпуска. Само обновление не станет общедоступным до осени, а скорее всего с выходом LCU (последнее накопительное обновление) с последними функциями и исправлениями.

Если Microsoft удастся реализовать свои планы с Sun Valley, это будет крупнейшее обновление пользовательского интерфейса Windows 10, которое мы когда-либо видели до сих пор, после трех долгих лет, когда Windows 10 оставалась в стороне. Пэнос Панай хочет, чтобы люди перешли от необходимости в Windows к любви к ней. А современный, обновленный интерфейс, интуитивно понятный и ориентированный на дизайн, это отличное начало.

С Sun Valley Windows 10 по-прежнему будет знакома пользователям ПК в отличие от перехода с Windows 7 на Windows 8. Заку также сообщили, что для некоторых функций можно будет переключаться между новым и старым интерфейсом, давая пользователям возможность выбора вместо принуждения. Sun Valley стремится улучшить и модернизировать привычный интерфейс Windows, а не радикально его изменить.

Подробнее..

Перевод Положение дел у Windows сколько разношерстных уровней UI в Windows 10?

08.02.2021 14:10:06 | Автор: admin

Все мы слышали байку: если в Windows 10 копнуть достаточно глубоко, можно найти элементы, относящиеся еще ко временам Windows 3.x. Но так ли это на самом деле? В этой статье мы узнаем, сколько уровней пользовательского интерфейса присутствует в Windows и когда они были впервые представлены.

Для этого эксперимента я выбрал последнюю сборку Windows 10 Insider Build (по состоянию на 6 февраля 2021 г.), Windows 10 21301.

Итак, с места в карьер!

Уровень первый: Fluent Design.

Начнем мы с новейшего и прекрасного Fluent Design. Анонсированный в 2017 году и представленный с обновлением Windows 10 1803 Fluent Design представляет собой серьезную переработку Modern Design Language 2 (MDL2), направленную на привнесение таких элементов, как свет, глубина, движение, материальность и масштаб. Также появился эффект подсвечивания и акриловый полупрозрачный фон.

На данный момент большинство встроенных UWP-приложений были обновлены с использованием элементов Fluent такие, как элементы вроде меню "Пуск", "Центра уведомлений" и экрана входа в систему.

Хотя Fluent Design получил высокие оценки, большинство энтузиастов сочли этот шаг слишком незначительным и запоздалым, поскольку новый стиль используется лишь в небольшой части системы.

Уровень 2: Metro.

Если мы немного углубимся в ОС, то увидим элементы, которые не обновлялись со времен Windows 8/8.1.

Некоторые из них явные недоработки, как всплывающее меню громкости, всплывающее меню USB, а также некоторые элементы на экране входа в систему.

Другими элементами Metro, хотя и не такими заметными, являются загрузочный экран (который скоро будет заменен на более новый) и WinRE.

Знаете ли вы, что впервые вращающиеся точки были представлены в Windows 8, билд 7989?

Так, ладно, перейдем к третьему уровню: к элементам Windows 8 Win32.

Как и Windows 10, Windows 8 также страдала от проблем с целостностью (лучше или хуже). Однако в Windows 8 были внесены существенные улучшения в основные пользовательские элементы такие, как проводник Windows и диспетчер задач. Хотя в последующих обновлениях Windows 10 они получат некоторые качественные улучшения, изменения будут минимальными.

Кроме того, важным изменением с выходом Windows 8 стала переработка диалоговых окон передачи файлов.

Некоторые из этих изменений начались в Windows 7, что подводит нас к четвертому уровню: элементам пользовательского интерфейса Windows 7

Windows 7, без сомнения, одна из самых любимых версий Windows всех времен, которую хвалят за большие улучшения по сравнению с Windows Vista. Она принесла много новых функций, которые, хотя и не были столь значительными как те, что предлагает Vista, сделали Windows 7 очень надежной ОС настоящим преемником Windows XP. Однако, одним из самых печально известных изменений, привнесенных Windows 7, является ленточный интерфейс, пришедшим из Office 2007. Paint и Wordpad были первыми приложениями, которые его получили.

Хотя в какой-то момент Microsoft решила отказаться от классического Paint в пользу нового Paint 3D (представленного в Windows 10 Creators Update), после негативной реакции они отменили свое решение.

Другие функции, которые были обновлены в Windows 7 и с тех пор остались прежними: Windows Media Player 12, подключение к удаленному рабочему столу и некоторые диалоговые окна с файлами.

Теперь перейдем к 5-му уровню пользовательского интерфейса: Windows Vista.

Релиз Windows Vista имел огромную важность, принесшим столь необходимую модернизацию платформы. Почти все основы ОС были так или иначе улучшены, от загрузчика до модели драйвера. Однако, как мы все уже знаем, Windows Vista станет одним из худших выпусков Windows за всю историю, с самого начала страдающего от проблем. Однако одной из немногих расхваленных функций был пользовательский интерфейс. В нем были переработаны некоторые основы, которые не обновлялись со времен Windows 95. Одним из главных способствующих факторов этого изменения было введение так называемых мастеров "Aero Wizards", пришедших на смену предыдущему стандарту мастеров, Wizard97.

Другие функции, которые были переработаны в Windows Vista, стали в основном все те же, что и в Windows 10: панель управления, программа поиска, факсы и сканирование Windows.

Кстати о Windows Vista: знали ли вы, что при определенных обстоятельствах Windows 10 возвращается к загрузочному экрану Vista? Это случается, когда ваша видеокарта не поддерживает режим видео, который используется на стандартном экране загрузки.

Теперь перейдем к 6-му уровню: Windows XP.

Вы не поверите, но в Windows 10 встроено не так много элементов XP. Вероятно, это связано с тем, что большинство основ уже обновлены к Windows 2000. Однако Windows 10 содержит некоторые диалоговые окна файлов из XP, которые видны при установке драйвера.

Уровень 7: Windows 2000.

Windows 2000 стала важной вехой в линейке операционных систем Microsoft NT. Это также была ступенька, которая ознаменовала начало перехода к новому унифицированному видению Windows. Однако Windows 2000 по-прежнему оставалась ОС, ориентированной на корпоративный сектор, а это значит, что она принесла много новых функций, разработанных для специалистов.

Консоль MMC стала одной из наиболее значительных дополнений, элементы которого с тех пор практически не изменились.

Еще одна функция, представленная по умолчанию в Windows 2000, установщик Windows, который по-прежнему имеет все тот же значок, когда впервые был представлен!

Еще один элемент пользовательского интерфейса, который не изменился (кроме фирменного стиля, конечно), это winver, дизайн которого был представлен в Windows 2000, билд 1946.

В то время, как Windows 2000 представила множество функций, предназначенных для опытных пользователей, Windows 95, вероятно, является самым знаковым релизом Windows на сегодняшний день. Он установил фундаментальные парадигмы, которые действуют и по сей день: меню "Пуск", контекстные меню, панель задач и корзину. Хотя эти функции, конечно, обновлялись в течение многих лет, некоторые из них остались почти такими же.

Теперь о восьмом уровне: элементы Windows 95/NT 4.0

Элемент, который в основном является пережитком старых компьютерных привычек, когда нужно было защищать свой драгоценный ЭЛТ-экран, это настройки заставки.

Еще один поразительно похожий элемент это поле "Выполнить".

Еще одним распространенным элементом пользовательского интерфейса, прошедшим проверку временем, является экран свойств папки.

А есть и множество других элементов пользовательского интерфейса, которые не менялись со времен Windows 95. Это ли не пример дизайна, над которым время не властно? Судите сами.

Уровень 9: Windows 3.1 и DOS. В общем-то

Что ж, на самом деле это не "уровень пользовательского интерфейса", так как я не смог найти никаких элементов интерфейса, предшествующих Windows 95 (хотя у меня есть ощущение, что они, безусловно, есть). Однако в Windows 10 есть специфический файл moricons.dll, который содержит множество старых значков времен DOS. Сами поглядите:

Ну вот и все. Как вы, возможно, уже знаете, с выходом "Sun Valley" Microsoft планирует модернизировать пользовательский интерфейс Windows, целью которого является унификация дизайна ОС. Однако, как мы видим, Windows это гигантская операционная система. Увенчаются ли успехом их усилия по созданию единого пользовательского интерфейса? Время покажет.

Подробнее..

Перевод В Windows 10 21H2 появится новый параметр в меню питания, изоляция сторонних драйверов и процесс taskbar.dll

29.03.2021 12:16:08 | Автор: admin

В Windows 10 добавят новый параметр в меню питания для перезапуска приложений, изоляцию сторонних драйверов, а панель задач получит отдельный процесс.

Microsoft представил инсайдерам сборку Windows 10 21343 с некоторыми значительными визуальными изменениями, представив новые иконки для проводника. Но, похоже, это было не единственное улучшение в выпуске, поскольку в меню питания также появился новый параметр, который позволяет выбирать, перезапускать ли приложения после перезагрузки.

Опция называется Перезапускать приложения после входа в систему. Впервые ее заметил пользователь Twitter @WithinRafael (Рафаэль Ривера), но по умолчанию она не включена в системе. При выборе этого параметра включается функция Перезапустить приложения в приложении Настройки.

Возможность перезапуска приложений после входа в систему не нова, она уже давно является частью операционной системы, но добавление опции в меню Пуск сделает ее более доступной для пользователей.

Помимо новой опции питания, пользователь Twitter @thebookisclosed (Albacore) обнаружил, что Microsoft, похоже, вносит изменения в изоляцию сторонних драйверов в Windows 10 аналогично тому же подходу, который применяется в Windows 10X.

Согласно @thebookisclosed, Microsoft создает новую папку OEMDRIVERS внутри папки Windows, в которой будут храниться сторонние драйверы вместо того, чтобы хранить их в папке System32.

Кроме того, пользователь Twitter Albacore также заметил, что панель задач будет выделена в отдельный процесс. До сих пор панель задач была частью explorer.exe, но после сборки 21343 процесс был перемещен в taskbar.dll.

Сюрреалистично наблюдать, как панель задач перемещают по прошествии десятилетий. Проводник по-прежнему содержит старый код, но в будущем можно будет переключиться на динамически подключаемую библиотеку. По-прежнему есть некоторые странные ошибки, такие как наполовину сломанный интерфейс поля поиска, поясняет @thebookisclosed.


Активировать скрытые возможности на инсайдерских билда можно через ViveTool или mach2.

Подробнее..

Я автоматизировал тестирование Dr. Web. А сможете ли вы?

15.10.2020 14:05:55 | Автор: admin


Я никогда не пользовался Dr. Web. Я понятия не имею, как он устроен. Но это не помешало мне написать для него ряд автотестов (и лишь лень не позволила мне написать ещё сотню других):


  1. Тест на установку Dr. Web;
  2. Тест на ограничение доступа к съемным устройствам (флешкам);
  3. Тест на разграничение доступа к каталогу между программами;
  4. Тест на разграничение доступа к каталогу между пользователями системы (родительский контроль).

Такие и многие другие тесты можно клепать как горячие пирожки, и не только применительно к Dr. Web, и не только применительно к антивирусам. В этой статье я расскажу, как это сделать.


Подготовка


Для тестов нам понадобится виртуалка с Windows на борту. Я подготовил её вручную, выполнив на ней следующие манипуляции:


  1. Собственно, установил Windows 10 Pro x64;
  2. Во время установки создал основного пользователя "testo" в паролем "1111";
  3. Включил автологин для этого пользователя;

Для автоматизации тестов я буду использовать платформу Testo. Что это такое и как этим пользоваться можно почитать здесь. Нам же сейчас требуется импортировать готовую виртуалку в автотесты. Сделать это очень просто:



Здесь предполагается, что /path/to/win10.qcow2 это путь к диску той виртуалки, которую я подготовил вручную. На этом подготовка заканчивается, и начинается экшен.


Тест 1 Устанавливаем Dr. Web!


Для начала надо решить вопрос с переносом дистрибутива Dr. Web на виртуальную машину. Сделать это можно (например) с помощью флешки:



Всё, что нам надо сделать это положить установщик Dr. Web в папочку ${DR_WEB_DIR} (точное значение этого параметра мы будем задавать при запуске testo). А Testo само позаботится о том, чтобы этот инсталлятор оказался на флешке.


Теперь можем приступить, собственно, к написанию теста. Пока что начнём тест с простых вещей: включим виртуалку (после создания она будет выключена), дождёмся появления рабочего стола, включим флешку и откроем её содержимое через проводник:



Скриншот на момент окончания сценария


Можно, конечно, запустить инсталлятор прямо отсюда, из самой флешки. Но мы лучше сделаем всё по-честному мы скопируем инсталлятор на рабочий стол и запустим инсталлятор оттуда. Как же нам скопировать файл? А как бы это сделал человек?



Скриншот, на котором ещё происходит копирование файла


Всё, копирование успешно завершено! Теперь можно закрыть окно с флешкой и вытащить её:



Скриншот после закрытия проводника


Теперь, когда инсталлятор оказался на рабочем столе, нам нужно дважды кликнуть на него чтобы запустить процесс установки. А сама установка сводится к простому прокликиванию кнопок и галочек и не представляет большого интереса:



Скриншот на момент окончания установки


Завершаем наш тест перезагрузкой. И в конце не забудем проверить, что после перезагрузки на рабочем столе появилась иконка с Dr. Web:



Скриншот после перезагрузки


Отличная работа! Мы автоматизировали установку антивируса Dr. Web! Давайте немного передохнём и посмотрим, как это выглядит в динамике:



Переходим к тестированию фич.


Тест 2 Ограничение доступа к флешкам


Первая фича по списку ограничение доступа к флешкам. Для этого спланируем довольно прямолинейный тест:


  1. Попробуем вставить флешку и создать там пустой файл должно получиться. Вытащим флешку;
  2. Включим блокировку съемных устройств в Dr. Web Security Center;
  3. Ещё раз вставим флешку и попробуем удалить созданный файл. Действие должно быть заблокировано.

Создадим себе новую флешку, вставим её в Windows и попробуем создать папку. Что может быть проще?



Скриншот на момент окончания сценария


Создаём новый текстовый файл через контекстное меню проводника:



Скриншот после переименования файла


Отключаем флешку, делаем это безопасно:



Теперь мы убедились, что с флешкой работать можно, а значит можно приступать к её блокировке в центре безопасности Dr. Web. Для этого сначала надо открыть центр безопасности:



Скриншот с окном Security Center


Можем заметить, что для открытия любого приложения в Windows нужно выполнить фактически одинаковые действия (кликнуть на строку поиска, дождаться появления окна с популярными приложениями, вбить имя интересующего приложения, дождаться, когда оно появится в списке и, наконец, нажать Enter). Поэтому эту группу действий можно выделить в макрос open_app, в который в качестве параметра будет передаваться имя открываемого приложения:



Этот макрос нам ещё пригодится.


Первое, что мы сделаем, открыв центр безопасности Dr. Web включим возможность вносить изменения:



Теперь немного покликаем по менюшкам и зайдем в меню "Configure device access rules". В этом меню поставим галочку в пункте "Block removable media".



Скриншот с окном Devices and Personal Data


Попробуем открыть флешку теперь:



Скриншот с сообщение об ошибке


Вот так потихоньку-полегоньку мы и написали первый тест с тестированием вполне осязаемой фичи в Dr. Web. Настало время передохнуть и помедитировать, глядя на результаты наших трудов:




Тест 3 Разграничение доступа к каталогу между программами


Основная идея этого тесткейса проверить работу Dr. Web при ограничении доступа к определенной папке. Если конкретно, то необходимо защитить папку от каких-либо изменений, но добавить исключение для какой-нибудь сторонней программы. Собственно, сам тест выглядит следующим образом:


  1. Установим на ОС стороннюю программу, для которой чуть позже добавим исключение при доступе к защищаемой папке. Сегодня сторонняя программа дня файловый менеджер FreeCommander;
  2. Создаем папку с файликом, которую будем защищать всеми силами;
  3. Откроем центр безопасности Dr. Web и включим там защиту этой папки;
  4. Настроим исключение для FreeCommander;
  5. Попробуем удалить файл из защищаемой папки обычным способом (через проводник Windows). Не должно получиться;
  6. Попробуем удалить файлик через FreeCommander. Должно получиться.

Ух, много работы. Быстрее начнём быстрее закончим.


Пункт первый, установка FreeCommander не сильно отличается от установки Dr.Web. Обычная рутина: вставили флешку, запустили инсталлятор и так далее. Пропустим это и перейдём сразу к интересному.


Если всё-таки интересно, как установить FreeCommander

Начнём с простого: создадим флешку, в которую поместим дистрибутив FreeCommander, а затем в тесте вставим флешку в ОС и откроем её:



Далее несколько не кликов чтобы запустить установку:



Установка не очень интересная, просто кликаем везде "Далее", а в конце не забываем отключить галочки с просмотром ReadMe и немедленным запуском FreeCommander



Заканчиваем тест, закрывая все окна и вытаскивая флешку



Готово!


Для работы с Dr. Web создадим новый тест dr_web_restrict_program, который будет полагаться на результат работы предыдущего теста win10_install_freecommander.


Начнём тест с создания папки Protected на рабочем столе:



Скриншот после создания папки


Заходим в папку Protected и создаём там файл my_file.txt, который будет играть роль защищаемого файла:



Ох, надо было бы тоже оформить это в виде макроса, ну да ладно ...


Скриншот после создания файла


Отлично, теперь надо включить защиту папки. Идём знакомой дорожкой и открываем Dr. Web, не забываем включить режим изменений. После чего переходим в меню "Data Loss Prevention".



Скриншот с окном Data Loss Prevention


Немного поработаем мышкой и добавим нашу папку Protected в список защищаемых:



Скриншот с мастером добавления защищаемой папки


Ну а теперь надо настроить исключение по доступу к папке для FreeCommander. Ещё немного работы мышкой:



Скриншот с добавленной программой-исключением


Теперь аккуратно закрываем все окна и пробуем удалить файл "my_file.txt" стандартным способом:



Скриншот с сообщением от Dr.Web


Но ничего не получилось значит Dr. Web действительно отработал! Половина теста позади, но нам ещё надо проверить, что будет работать исключение для FreeCommander. Для этого открываем FreeCommander и переходим в папку Protected:



Скриншот с окном FreeCommander


Ну и попробуем удалить файл my_file.txt:



Скриншот после удаления файла


Исключение для FreeCommander работает!


Отличная работа! Большой и сложный тесткейс и всё автоматизировано. Немного расслабона:




Тест 4 Родительский контроль


Этот последний на сегодня тесткейс мы построим следующим образом:


  1. Создадим нового пользователя MySuperUser;
  2. Залогинимся под этим пользователем;
  3. Создадим файл my_file.txt от имени нового пользователя;
  4. Откроем центр безопасности Dr. Web и включим родительский контроль для этого файла;
  5. В родительском контроле ограничим права пользователя MySuperUser на им же созданный файл;
  6. Попробуем прочитать и удалить файл my_file.txt от имени MySuperUser и посмотрим на результат.

Я не буду приводить здесь сценарий теста. Он строится по тому же принципу, что и предыдущие тесты: активно работаем мышкой и клавиатурой. При этом нам не важно, что мы автоматизируем хоть Dr.Web, хоть создание нового пользователя в Windows. Но давайте всё же посмотрим, как будем выглядеть прогон такого теста:



Заключение


Исходники всех тестов Вы можете посмотреть здесь


Более того, все эти тесты Вы можете прогнать на своей машине. Для этого Вам потребуется интерпретатор тестовых сценариев Testo. Скачать его можно здесь.


Dr. Web оказался неплохой тренировкой, но вдохновение для дальнейших подвигов я хотел бы почерпнуть из Ваших пожеланий. Пишите в комментариях свои предложения о том, какие автотесты Вы бы хотели увидеть в будущем. В следующей статье я попробую их автоматизировать, посмотрим, что из этого получится.

Подробнее..

Будни OEMщика (Часть 1)

10.09.2020 10:11:09 | Автор: admin

Понятие OEMщик очень широкое, оно может подразумевать любого сотрудника, работающего в одной из многих сфер производства. В данной статье под OEM подразумеваются продукты компании Microsoft, поставляемые вместе с производимым оборудованием. Т.е., под OEMщиком подразумевается специалист, который занимается подготовкой Windows к тиражированию на множество устройств. В первой части статьи мы рассмотрим подготовку образа Windows и тиражирование. А во второй части рассмотрим возможные варианты настройки Windows для устройств фиксированного назначения и особенности тиражирования с этими настройками.


Данный материал поможет новичкам сориентироваться в направлении изучения вопроса тиражирования Windows, а также в статье будут даны ссылки на скрипты и утилиты, которые помогут избавиться от некоторой рутины и избежать ошибок.


Предисловие


OEMщик довольно редкая специальность т.к. она требуется в компаниях, которые производят устройства с Windows: компьютеры, ноутбуки, планшеты, банкоматы, информационные киоски, рекламные панели, серверы.


Редкость и отсутствие названия данной специальности создали проблему обмена опытом, т.к. нет сообществ по обмену опытом, например, как у системных администраторов, это существенно усложняет изучение вопроса.


Кому же нужно осваивать данную специальность, если она настолько редкая? Казалось бы, когда IT-шник придет работать в фирму, которая занимается производством устройств с Windows, там его всему и научат. Но так бывает далеко не всегда, есть компании, которые в основном специализируются на продаже оборудования без установленного ПО. Но вдруг приходит заказчик и говорит, что он хочет купить у вас оборудование, но только с установленной операционной системой. Вот с этого и начинаются вопросы, касающиеся тиражирования системы.


С чего же начать изучение вопроса тиражирования? К кому можно обратиться за советом? Ответ очевиден, нужно обратиться к тому, кто заинтересован в продаже Windows, а именно к компании-дистрибьютору. Компания Кварта Технологии занимается продажей и продвижением Windows. Одно из направлений по продвижению это упрощение настройки Windows и информирование о ее специальных возможностях. Для информирования и косвенной поддержки у нас есть:



В Кварте можно купить любую редакцию Windows, но основная специализация компании это продажа Windows 10 IoT Enterprise, ранее известная как Embedded, которая предназначена для устройств фиксированного назначения. Специальные возможности этой системы можно увидеть на этом видео.


А теперь есть еще и эта статья, в которой я расскажу об ошибках начинающих, как их избежать и сделать работу проще. Разумеется, что во многом упростить работу помогут скрипты, которые Вы можете получить абсолютно бесплатно.


Начало начал


Берем дистрибутив Windows 10 IoT Enterprise 1809. Если Вас интересует только тиражирование, можете взять любую другую редакцию Windows 10, кроме Windows Core, процесс подготовки и тиражирования для всех редакций будет одинаковым. Иногда бывают вопросы Где взять оригинальный дистрибутив? и Как записать образ на флэшку?.


Коммерческий оригинальный дистрибутив можно скачать на сайте microsoftoem.com. Для загрузки дистрибутивов рекомендую использовать IE. Относительно недавно Майкрософт поменял оболочку сайта, это некоторым образом приводит в замешательство тех, кто им пользуется крайне редко. Убедитесь, что Вы вошли на сайт, для этого подведите курсор мыши к символу учетной записи в правом верхнем углу, после чего в выпадающем сообщении должны отобразиться учетные данные. Для перехода к загрузке образа перейдите по пунктам выпадающего меню Orders > Software Downloads > Software Order Center



В следующем окне необходимо начать вводить название компании в поле Организация, при частичном совпадении система сама предложит подходящие наименования. После выбора компании выберите номер соглашения, а затем нажмите на кнопку Поиск



После поиска система предоставит выбор доступных наборов для загрузки. Просто проставьте флажки в тех наборах, которые хотите скачать, а затем нажмите на символ корзины для перехода к меню загрузки. Некоторые наборы разбиты на две части, для их сборки потребуется утилита Microsoft Media Tool, которую можно скачать на этой же странице.



Для записи образа на флэшку можно воспользоваться скриптом MakeBootMedia, который находится в наборе скриптов. Обратите внимание, что для комфортного запуска скриптов PS1 есть скрипты BAT.


И еще небольшое замечание, если Вы устанавливаете систему в UEFI режиме, то разрядность устанавливаемой системы должна соответствовать разрядности, которую поддерживает UEFI BIOS устройства, иначе Вы просто не сможете загрузиться даже для установки системы. Проще говоря, если у Вас не получается загрузиться с флэшки для установки Widows 10 x64, попробуйте установить Widows 10 x32.


Нечистая, нечистая, братцы!


В первую очередь, нам понадобится чистая установленная система. К моему удивлению, сложности начинаются уже здесь. При консультации по решению проблем довольно часто выясняется, что под чистой системой подразумевалась система, где уже что-то установлено, например, драйверы или языковой пакет, или система установлена поверх старой системы.


Запомните, у Вас будет чистая система, если установщику указан неразмеченный жесткий диск, и при установке нет подключения к интернету. Для уверенности, что все настройки системы оригинальные, не нужно использовать файл ответов для автоматизации установки. Если Вы не следуете этим простым правилам, то систему нельзя назвать чистой.


Так как мы готовим образ для тиражирования, то сразу после установки можно перевести систему в режим аудита. Для перевода системы в режим аудита нужно нажать Ctrl + Shift + F3 на шаге выбора региона.



А когда система загрузится в режиме аудита, первое что мы сделаем запечатаем систему в режиме аудита и создадим образ системы. А вот здесь некоторые начинающие начинают сопротивляться Зачем, я же ничего не сделал, не вижу смысла и т.д. Сделаю небольшое отступление и расскажу, для чего это нужно.


При настройке системы Вы можете столкнуться с различными проблемами, эти проблемы могут быть настолько специфичными, что решать их придется самостоятельно. Чтобы решить проблему, нужно выяснить причину ее появления. Если у Вас есть образы системы, которые Вы создавали по мере настройки системы, то развертывая предыдущие образы и проверяя наличие ошибки, можно выявить, после чего она появилась. В противном случае придется настраивать систему заново и пошагово проверять наличие ошибки. Нельзя исключать, что проблема в самой системе, для этого и нужен чистый образ. Развертывать систему из образа проще и быстрее, чем ее ставить. Естественно, что процесс создания и развертывания образа должен быть автоматизирован и требовать минимум трудозатрат, ведь Вам придется создавать и развертывать образы довольно часто. Чтобы не быть голословным, скажу, что я понял, после чего появляется проблема, описанная здесь под заголовком Шаг 7 только после проверки на чистой системе и это не единственный случай.


А теперь немного углубимся в запечатывание системы и снятие образа. Когда система загрузится в режиме аудита, автоматически запустится утилита Sysprep. Для запечатывания в режиме аудита в разделе System Cleanup Action выберите Enter System Audit Mode. Чтобы система без проблем загрузилась на другом оборудовании, то ее можно отвязать от текущего оборудования, для этого ставим флажок Generalize. В разделе Shutdown Options выбираем Shutdown и нажимаем OK, после чего система выключится. Система запечатана только до тех пор, пока не загружена, не пытайтесь снять образ загруженной системы.



Для снятия образа нам понадобится флэшка с WinPE


Создаем флэшку с WinPE


Используя набор Windows ADK можно собрать WinPE с различным набором компонентов, но можно поступить проще, WinPE есть на установочном диске Windows, можно использовать его, только нужно, чтобы вместо запуска установщика запускался скрипт с помощью которого можно легко снять или развернуть образ системы. Для подготовки флэшки будем использовать скрипт MakeBootMedia из набора скриптов.


Для создания флэшки с WinPE с помощью предлагаемого скрипта необходимо использовать Windows 10 с версией не ранее чем 1703.


Подключите образ установочного диска к системе, подключите флэшку к ПК, которую можно очистить, запустите MakeBootMedia.bat и выберите пункт подготовки загрузочного носителя WinPE. Думаю, что нет смысла пошагово описывать действия т.к. там все интуитивно понятно, но скажу, что сделает скрипт и для чего.


После очистки выбранного диска скрипт создаст два раздела NTFS и FAT32. Т.к. версии Windows до Windows 10 1703 не видят на флэшке более одного раздела, то раздел NTFS будет первым, а FAT32 вторым. Если вдруг у Вас будет дистрибутив Windows 10 1607 и соответствующее WinPE, то WinPE загрузится со второго раздела FAT32, который будет помечен как загрузочный и сможет работать с разделом NTFS. Раздел NTFS нужен для хранения файлов большого объема, а раздел FAT32 нужен для загрузки в UEFI режиме.


После копирования файлов, необходимых для загрузки, скрипт подключит образ с последним индексом, который находится в файле boot.wim и добавит в него файл Winpeshl.ini, в котором будет прописано что нужно запускать при загрузке WinPE. В файле Winpeshl.ini прописан запуск файла Winpeshl.bat, который будет скопирован туда же, рядом с ini файлом. После этого образ будет отключен с сохранением.


В корень тома NTFS будет скопирован файл меню Menu.bat и будет создан файл Serial.txt с серийным номером флэшки, которая была подготовлена как загрузочная.


Создаем образ системы


Загрузитесь с подготовленной флэшки. После загрузки запустится файл Winpeshl.bat, который нужен только для поиска и запуска файла меню Menu.bat, в котором находится основное меню.


При выборе пункта снятия образа системы скрипт автоматически найдет раздел с системой и свернет ее в WIM образ, который будет на томе NTFS в папке Images. Обратите внимание, что будет снят образ только системного раздела. После снятия образа вытащите флэшку из ПК и перезагрузите его. Для перезагрузки достаточно просто закрыть запущенное окно.



Что такое WIM и с чем его едят


В Windows есть штатная утилита для обслуживания системы DISM. Одна из ее возможностей создание образов WIM. С ее помощью можно создать образ раздела или папки, при создании образа системного раздела DISM по умолчанию исключает ненужные файлы, такие, как файл подкачки и файл гибернации. В одном wim файле может быть множество образов, получить к ним доступ можно по индексу (номеру образа). Множество образов лучше хранить в одном wim файле т.к. у него есть дедупликация одинаковых файлов. Но при повреждении такого файла будут потеряны все образа, которые в нем хранились. В едином wim файле я храню архив образов, которые может быть когда-нибудь понадобятся.


Для упрощения работы с wim образами есть множество графических утилит, например GImageX и Dism++


Локализация


Перед локализацией системы рекомендую добавить команду для автоматического закрытия окна Sysprep, чтобы оно не мешалось при каждой загрузке. В наборе скриптов запустите скрипт Sysprep.bat и выберите пункт для добавления команды автоматического закрытия окна Sysprep при входе в систему.


Способов локализации довольно много, но нас интересуют способы локализации без подключения к интернету, а это значит, что нам нужен языковой пакет, который находится в наборе языковых пакетов. Локализация требуется очень часто, поэтому в наборе скриптов есть скрипт для полной автоматической локализации RU-ru и соответствующий языковой пакет для последней версии LTSC. Если в наборе скриптов нет языкового пакета для вашей системы, то просто подключите образ с языковыми пакетами для вашей системы и скрипт сам найдет языковой пакет.


Запустите скрипт Localization.bat, выберите пункт полной локализации системы и дождитесь завершения локализации, во время локализации система перезагрузится несколько раз, просто не мешайте ей. Если у Вас есть необходимость сделать дистрибутив для установки локализованной системы, то инструкцию по его созданию можно найти здесь.


После локализации запечатайте систему в режиме аудита и снимите образ системы как в прошлый раз. Для запечатывания можно запустить утилиту sysprep или можно запечатать систему с помощью скрипта. Запустите Sysprep.bat, выберите пункт запечатывания в режиме аудита, а затем пункт запечатывания без файла ответов.



Пробуем развернуть систему


Мы запечатывали систему с отвязкой от оборудования, а это значит, что теперь ее можно развернуть на почти любом устройстве. Разумеется, что устройство должно соответствовать минимальным системным требованиям, и контроллер системного диска не требует специальных драйверов.


Маленькая хитрость. Если во время установки системы установщик сообщает, что система не сможет работать на данном оборудовании и прекращает установку, не верьте ему, просто разверните образ системы с помощью DISM'а, не исключено, что она будет работать.


Загрузитесь с ранее подготовленной флэшки c WinPE. Обратите внимание, что для развертывания системы в меню скрипта есть несколько пунктов. В любом случае Вам подойдет вариант с автоматическим определением режима загрузки, это значит, что система будет развернута в том режиме загрузки, в котором она загрузилась с флэшки. С помощью других пунктов развертывания можно развернуть систему для загрузки в режиме UEFI или Legacy. Но учтите, что система не загрузится если ее развернуть в режиме загрузки, который не поддерживает BIOS.


После выбора пункта развертывания, скрипт предложит выбрать один из wim файлов, который находится в папке Images. А если в выбранном файле будет более одного образа, то он предложит выбрать образ. Образ будет развернут на первый найденный диск, который не соответствует серийному номеру в файле Serial.txt. Это нужно, чтобы не удалить данные с загрузочной флэшки, ведь в WinPE у флэшки может быть номер диска 0 или 1. После развертывания образа скрипт инициализирует загрузочный раздел и скопирует на него файлы WindowsRE.


Развертывание по сети


Способов тиражирования системы довольно много, нет одного универсального способа для всех. Нужно выбирать способ, который лучше всего подходит для специфики производства, специфики производимых изделий и требуемого количества изделий.


Для развертывания по сети можно использовать WDS, но можно обойтись и без него. Вполне может быть, что на начальных этапах его использовать не целесообразно. На уже имеющемся ПК достаточно сделать отдельную папку и предоставить к ней доступ по сети на чтение и запись. А в WinPE просто подключить ее как сетевой диск, после этого можно будет из этой папки развертывать образа и создавать образа прямо в нее. А самое хорошее то, что для такого решения скрипт на флэшке уже подготовлен, Вам останется только создать текстовый файл с указанием данных подключения к папке.


На подготовленной флэшке, рядом с файлом Menu.bat создайте файл NetConfig.txt и вставьте в него следующие строки:


LanPath=User=Password=MenuFilePath=

Сразу после знака равенства без пробелов укажите для LanPath полный путь к сетевой папке, для User имя пользователя, для Password пароль для подключения к папке. Для MenuFilePath укажите путь к запускаемому файлу меню относительно сетевой папки. Пример:


LanPath=\\desktop\dUser=UserNamePassword=YourPasswordMenuFilePath=Images\WIM\Network\LanMenu.bat

В качестве файла меню можно использовать скрипт LanMenu.bat из папки Menu, которая находится рядом со скриптом подготовки загрузочной флэшки MakeBootMedia.bat. В скрипте LanMenu.bat добавлен пункт перезапуска скрипта. Это нужно на тот случай, если после запуска скрипта LanMenu.bat в WinPE Вы его измените и сразу захотите посмотреть на результат без перезагрузки.


После того, как Вы создали папку, дали к ней доступ, создали файл с данными для доступа к этой папке и разместили в ней файл меню, у Вас начнет работать пункт в скрипте Меню сети. При выборе этого пункта текущий скрипт запустит скрипт LanMenu.bat и завершит работу. После этого все действия по созданию и развертыванию образов будут производиться непосредственно в сетевой папке.


А если Вы хотите, чтобы при загрузке с флэшки система автоматически запускала LanMenu.bat, то это тоже сделать очень легко. На флэшке, рядом с файлом Menu.bat создайте файл AutoRun.txt. Все команды, прописанные в этом файле, будут выполнены сразу после загрузки в контексте файла Menu.bat. Т.е. для автоматического выполнения пункта Меню сети нужно добавить в файл одну строчку


goto NetworkMenu

При необходимости временно отключить выполнение команд при загрузке WinPE можно просто изменить имя файла AutoRun.txt.


Драйверы


Драйверы должны попадать в систему в числе последних, когда уже точно будет известно, на каком оборудовании будет использоваться система. Если у Вас несколько устройств, которые требуют разных драйверов, но на них должна быть система с одинаковыми настройками, то самый простой способ, это на каждом устройстве отдельно установить необходимые драйверы и экспортировать их. А затем импортировать все драйверы в настроенную систему, так можно сделать образ для нескольких устройств. Естественно, так можно сделать только в том случае, если драйверы не конфликтуют друг с другом. В наборе скриптов есть скрипт Drivers.bat для экспорта и импорта драйверов.



Если драйверы конфликтуют друг с другом или по каким-то причинам Вы не хотите добавлять все драйверы в одну систему, то можно создать отдельные наборы драйверов для импорта и импортировать их после развертывания образа на целевом устройстве. Или создать разные образа для разных систем.


Если Вам нужно тиражировать систему с одинаковыми настройками на множество различных конфигураций, то целесообразно создать единую базу драйверов для тех комплектующих, из которых планируется сборка изделий. А из этой базы будут устанавливаться только те драйверы, которые необходимы для конкретного изделия. Какой драйвер подходит для конкретного устройства, можно узнать по идентификатору устройства Device ID. Все сведения о драйвере находятся в файле с расширением inf, в том числе там находится перечень идентификаторов устройств, для которых предназначен драйвер.


При создании утилит для определения возможности использования драйвера с устройством учтите некоторые моменты. Для сопоставления идентификаторов оборудования и идентификаторов в inf файле можно использовать самый короткий идентификатор inf файла, который совпадает с началом длинных идентификаторов. При сопоставлении идентификаторов можно отбрасывать окончания: &SUBSYS, &REV, &CC вместе со всеми символами после этих окончаний. Пример такого обрезания идентификаторов можно увидеть в скрипте DriverRestrictions, в функции Add-Devices.


Файл ответов Sysprepа


Параметры запечатывания, которые предлагает утилита sysprep в графическом интерфейсе, далеко не единственные. Множество параметров можно указать в файле ответов для запечатывания. Например, можно настроить полностью автоматическую загрузку системы после запечатывания в режиме OOBE. Режим OOBE это режим приветствия, после запечатывания в этом режиме система будет готова к использованию.


Какие параметры можно настроить в файле ответов, можно посмотреть здесь. Наиболее часто используемые параметры находятся в разделе Microsoft-Windows-Shell-Setup. Для добавления новых разделов или создания больших файлов ответов можно использовать WSIM Windows System Image Manager, он находится в наборе Windows ADK. Для правки небольших файлов ответов удобней использовать текстовый редактор. В наборе скриптов, в папке Unattend, есть примеры файлов ответов.


При запечатывании системы в режиме OOBE на конечном устройстве, когда есть уверенность, что комплектующие устройства останутся прежними, можно запечатать систему без отвязывания системы от оборудования. Для этого нужно в файле ответов указать параметр PersistAllDeviceInstalls.


Помимо использования стандартных параметров после запечатывания, можно выполнять произвольные команды. Команды можно выполнять в синхронном режиме RunSynchronous, в этом режиме каждая последующая команда начинает выполняться только после завершения предыдущей. И можно выполнять в асинхронном режиме RunAsynchronous, в этом режиме все команды выполняются независимо друг от друга.


Для чего нужен скрипт для запечатывания



Скрипт упрощает указание файла ответов для запечатывания, не нужно использовать командную строку. По умолчанию скрипт предлагает выбрать файл ответов в консольном меню, если это не удобно, то можно изменить выбор на графический, для этого нужно в вызове функции выбора файла Open-File добавить параметр D -D.


В каждом разделе файла ответов есть параметр processorArchitecture, разрядность, указанная в значении этого параметра должна соответствовать разрядности системы, в которой он используется, иначе весь раздел будет проигнорирован. Данное обстоятельство вынуждает создавать одинаковые файлы ответов для систем X32 и X64. При запечатывании системы с файлом ответов скрипт меняет в выбранном файле значения всех параметров processorArchitecture в соответствии с разрядностью запечатываемой системы, таким образом скрипт избавляет от необходимости создавать файлы ответов с одинаковыми настройками для систем разных разрядностей.


Плюс к этому, если Вы добавляли команду для автоматического закрытия окна Sysprepа, то при запечатывании в режиме OOBE она будет удалена.


В примерах файлов ответов настроен автоматический вход пользователя Admin. Использование настройки автоматического входа в систему с учетной записью, которой нет в системе приводит к тому, что система пытается войти в учетную запись, которой нет. При запечатывании с файлом ответов скрипт проверяет, есть ли в настройках файла ответа автоматический вход, если да, то есть ли в системе пользователь с таким именем.


При некоторых настройках системы загрузка в режиме OOBE будет невозможна, скрипт проверяет параметры таких настроек, а при необходимости отключит их и добавит команду на их включение после первой загрузки системы. Это настройки режима киоска и блокировки запуска приложений, о которых мы поговорим в следующей части.


По причине простой невнимательности могут быть допущены простые ошибки, которые могут потребовать сложных решений для их исправления. При угрозе возникновения таких ошибок, связанных с запечатыванием, скрипт выводит уведомления. Встречающиеся ошибки:


  • Итоговый образ системы подготовлен на пробной версии
  • Забыли ввести ключ множественной активации ePKEA
  • Ключ ePKEA введен и находится в открытом виде

Исхитрись-ка мне добыть то, чаво не может быть


Майкрософт не разглашает различные подробности, связанные с активацией системы, что приводит к плохой информированности и порождает излишние опасения или стремления реализовать то, что не предусмотрено системой. Ниже ответы на вопросы, которые появляются с завидной периодичностью.


Как создать активированный образ системы?


Активированный образ создать нельзя. Можно только подготовить образ к активации введя ключ многократной активации ePKEA.


Как зашить ePKEA в BIOS?


Официально такой способ использования ePKEA не поддерживается. Майкрософт наоборот сделал так, чтобы этого не делать. Ключ активации можно добавить в систему и скрыть его.


Как сохранить ключ и предотвратить нецелевые активации с ключом?


Если Вы боитесь утечки непосредственно самого ключа, то можно предотвратить его утечку. Ключ ePKEA выдается на компанию, его получает один сотрудник. Сотрудник получивший ключ продукта может лично ввести его в чистую систему стандартным способом и сразу скрыть ключ продукта. Когда ключ будет скрыт его нельзя будет посмотреть, но система сможет активироваться. После этого можно запечатать систему в режиме аудита и сохранить образ системы. Данный образ можно использовать для дальнейших разработок.


Но таким способом можно предотвратить только утечку ключа. А предотвратить нецелевые активации с этим ключом не получится т.к. получившийся образ можно будет развернуть на любом оборудовании и активировать систему.


Послесловие


С одной стороны, здесь описан необходимый минимум для начала освоения вопроса тиражирования. А с другой стороны для многих ситуаций этого минимума будет достаточно, разумеется при использовании предоставленных скриптов.


Но если говорить не о Windows 10 в целом, а о Windows 10 IoT Enterprise, то тиражирование это только часть, которую нужно освоить. А вторая часть это ее настройка. Во второй части статьи мы рассмотрим специальные возможности Windows 10 IoT Enterprise показанные на этом видео.


Если у вас остались вопросы относительно настройки и лицензирования Windows 10 IoT Enterprise, обращайтесь по адресу mse@quarta.ru или на сайт quarta-embedded.ru.
Ответы на некоторые вопросы Вы можете найти в нашей вики или на нашем YouTube-канале


Автор статьи: Борисенков Владимир, технический эксперт компании Кварта Технологии.

Подробнее..

Будни OEMщика (Часть 2)

24.09.2020 10:22:34 | Автор: admin

Для тех, кто не читал первую часть статьи, скажу, что в данной статье под OEMщиком подразумевается специалист, который занимается подготовкой Windows к тиражированию на множество устройств.


Из первой части Вы узнали, как быстро создать и развернуть образ системы. Помните, что, сохраняя образ системы по мере ее настройки проще выявлять проблемы, возникающие по мере настройки. Плюс к этому можно сохранить технологический образ системы с базовыми настройками, на основе которого можно будет подготавливать другие образы со специфическими настройками.


В этой части мы рассмотрим специализированные настройки, с помощью которых можно настроить устройство фиксированного назначения. К таким устройствам относятся: банкоматы, информационные киоски, рекламные панели, кассы и др. Плюс к этому режим мультикиоска можно настроить для офисного рабочего места, например для оператора колл-центра. При этом лицензия Windows 10 IoT Enterprise позволяет создавать множество учетных записей, а это значит, что на устройстве фиксированного назначения можно создать отдельную учетную запись для отдельного пользователя с индивидуальными настройками.


Для экспериментов с системой разверните локализованный образ системы в режиме аудита, который мы подготовили в первой части.


Напоминаю, что рассматриваемые настройки будут выполнены с помощью скриптов, которые можно взять здесь, а здесь находится описание скриптов. Но для некоторых настроек понадобится полный набор скриптов, который доступен при приобретении операционных систем линейки Windows 10 IoT в Кварта Технологии.


Периодически выходят новые версии скриптов с исправлениями и дополнениями, чтобы узнавать о выходе новых версий подпишитесь на нашу рассылку или присоединяйтесь к нашим группам в соцсетях.


Если по мере прочтения статьи у Вас будут появляться дополнительные вопросы по настройкам или по работе скриптов, возможно Вы сможете найти ответы на вопросы в этом видео. Под видео есть перечень демонстрируемых возможностей со ссылками на конкретное время видео.


Для каждого, кто тебя знает, ты разный


В первой части статьи речь шла о Windows 10 в целом, а теперь, учитывая, что в данной части будет рассмотрена настройка мультикиоска, речь пойдет именно о Windows 10 IoT Enterprise 2019 т.к. в предыдущих версиях Windows 10 с долгосрочным обслуживанием нет поддержки мультикиоска. Если у Вас нет дистрибутива этой системы, то здесь можно скачать пробную версию. У пробной версии системы есть только одно ограничение она выключается каждый час. Чтобы выключения не были неожиданными, можно добавить уведомление за 5 минут до выключения системы с помощью скрипта TrialShutdownTimeControl.


Различные цифровые обозначения в названии продукта и номере версии часто приводят к путанице. Чтобы избежать путаницы, можно посмотреть версию операционной системы выполнив команду winver, у Вас должна быть версия системы 1809.



Почему многие компании реализуют свои решения именно на IoT Enterprise?


В первую очередь это вопрос цены, стоимость лицензии IoT зависит от процессора, с которым будет использоваться система. Для низкопроизводительных систем цена IoT может быть около 30% от стоимости Windows Pro.


Плюс к этому в редакции Enterprise максимальный набор возможностей, в отличии от Pro. Причем это не какие-то ненужные возможности, а возможности, которые помогут создать наиболее защищенное решение:


  • Различные режимы киоска
  • Блокировка запуска приложений
  • Блокировка устройств
  • Защита диска от записи
  • Блокировка клавиш и ввода символов
  • Поддержка 10 лет с момента выпуска без перехода на следующую версию

Еще одним важным фактором является дополнительный способ активации Windows, который есть только у Windows 10 IoT Enterprise. Это активация с помощью ключа ePKEA. ePKEA это ключ множественной активации, который выдается на компанию. С этим ключом будут активироваться все устройства, выпускаемые компанией. С таким ключом доступны все стандартные способы активации, по интернету или по телефону. Данный ключ нужно ввести в систему перед тиражированием и скрыть его.


Сочетание максимальных возможностей и минимальной цены делает операционную систему Windows 10 IoT Enterprise очень привлекательной, именно поэтому ее выбирают множество компаний для своих устройств.


Пользователи


В первой части статьи мы рассмотрели подготовку образа системы без настроек и без пользователей. При настройке устройства фиксированного назначения понадобится создать как минимум две учетные записи. Администратор для обслуживания системы и пользователь для использования устройства. При необходимости можно создать множество пользователей с индивидуальными настройками для каждого пользователя.


Ограничения для пользователя желательно настраивать не для конкретной учетной записи, а для группы Пользователи. Тогда, для временного снятия ограничений с пользователя достаточно перевести учетную запись из группы Пользователи в группу Администраторы.


Для быстрого создания пользователей можно воспользоваться скриптом Users, который находится в наборе скриптов. Просто введите имена пользователей в столбик в файл CreateUserList.txt и выберите в скрипте пункт меню создания пользователей. Скрипт создаст пользователей, отключит срок действия пароля и переведет пользователей в группу Администраторы. Для перевода пользователя между группами Пользователи и Администраторы достаточно выбрать имя пользователя в меню скрипта.



Безвыходных положений не бывает


При настройке систем фиксированного назначения нужно знать их типовые проблемы, чтобы понимать, что нужно настроить в системе. Плюс к этому нужно знать, как настроить необходимую возможность или хотя бы знать, где посмотреть информацию о настройке. Как я говорил в первой части статьи, далеко не во всех компаниях есть отдельный специалист по настройке и тиражированию систем. А у начинающих специалистов по настройке систем фиксированного назначения может уйти довольно много времени на поиск необходимой информации. Плюс к этому отсутствие знаний типовых проблем устройства приводит к типовым ошибкам при настройке систем фиксированного назначения.


И здесь появляется вопрос. Если есть типовые настройки для устройств фиксированного назначения, то почему бы не сделать инструмент, который автоматически установит типовые настройки системы для устройств фиксированного назначения?


Компания Кварта Технологии подготовила набор скриптов, в котором скрипты, отвечающие за типовые настройки могут работать в группе, т.е. за один раз можно включить или выключить множество настроек. Управлять группой скриптов можно с помощью скрипта SettingsGroup, который находится в корне каталога набора скриптов. С его помощью можно посмотреть текущие значения группы настроек и изменить их. По умолчанию в группе будут работать все скрипты, которые отвечают за типовые настройки. Но при необходимости можно изменить начальный каталог поиска скриптов, которые могут работать в группе, тем самым изменив набор изменяемых настроек. Настройки со значениями, нетипичными для устройств фиксированного назначения будут выделены красным, а настройки с типичными значениями для устройств фиксированного назначения зеленым.



Если Вы захотите добавить в какой-либо скрипт поддержку работы в группе, то это сделать несложно. Скрипт, который управляет группой скриптов, после выбора пункта меню ищет в указанной папке все скрипты PS1, в которых есть функция Lockdown и отправляет ей параметр в зависимости от выбранного пункта. Один из самых простых примеров реализации функции Lockdown в файле WindowsUpdate.ps1


Типовые настройки для устройств фиксированного назначения


В данном разделе краткое описание типовых настроек скриптов, которые могут работать в группе.


Схема питания


Как правило, устройство фиксированного назначения должно работать постоянно, без засыпаний и отключения экрана. Значит, необходимо отключить все энергосберегающие функции. Скрипт настройки питания не проверяет состояние текущей схемы питания и не перенастраивает текущую схему питания, он создает новую схему питания на основе сбалансированной схемы питания и отключает энергосберегающие функции. Изменения, которые вносятся в создаваемую схему питания, описаны в комментариях к командам в файле PowerSettings.ps1.


Отображение ошибок


Чтобы некритические ошибки не мешали использованию устройства, их нужно отключить. Какие сообщения будут отключены, показано на этом видео.


Отчеты об ошибках


Помимо отображения самих ошибок, система может запрашивать подтверждения на отправку отчетов об ошибках. Для устройств фиксированного назначения такую возможность тоже нужно отключать.


Всплывающие уведомления


О различных событиях система уведомляет пользователя с помощью всплывающих уведомлений, их тоже нужно отключать. Обратите внимание, что скрипт отключает всплывающие уведомления только для той учетной записи, в которой он запущен.


Сценарий службы политики диагностики


Если система обнаружит какие-либо проблемы, то служба политики диагностики предложит пользователю возможные варианты решения проблем. Такой функционал нужно отключать.


Отображение ошибок при загрузке


Если работа системы будет завершена некорректно несколько раз подряд, то при загрузке система сообщит об ошибке и не загрузится самостоятельно. Некорректное завершение работы может быть вызвано сбоем питания, поэтому такие сообщения нужно отключать. Но необходимо учесть, что эта настройка находится в файле конфигурации загрузки, который находится на загрузочном разделе. Т.е. при сохранении образа системного раздела данная настройка будет утеряна. В таком случае, проще всего отключить отображение ошибок с помощью файла ответов для запечатывания.


В наборе скриптов есть пример файла ответов для запечатывания с отключением отображений ошибок загрузки OOBEAuto_IgnoreAllBootFailures.xml


Отображение синего экрана


Думаю, что многие из вас видели подборку синих экранов в необычных местах. В подобных случаях лучше, чтобы вместо синего экрана отображался черный, для этого достаточно просто отключить отображение синего экрана.


Для проверки поведения системы при появлении синего экрана можно вызвать синий экран вручную. Для включения возможности вызова синего экрана вручную есть скрипт CrashOnCtrlScroll, который находится в наборе скриптов.


Отображение уведомлений об обновлениях


Система может показывать различные уведомления, связанные с обновлениями, что тоже будет мешать использованию устройства. Поэтому такие уведомления необходимо отключать.


Автоматическое получение обновлений


В локальной групповой политике множество настроек, связанных с обновлениями, но чаще всего требуется отключить получение всех обновлений, поэтому скрипт типовой настройки отключает получение всех обновлений.


Прокрутка от краев экрана


Под данной настройкой подразумевается жест для вызова центра уведомлений Windows. Данный жест необходимо отключать на устройствах с чувствительным экраном. Но т.к. отключение данной возможности не будет мешать настройке устройства, то данный жест можно отключать всегда.


Отображение логотипа и анимации в виде крутящихся шариков


Во время загрузки системы отображается логотип системы и анимация в виде крутящихся шариков. Довольно часто требуется скрыть данные элементы. Иногда требуется скрыть один из этих элементов.


Данные элементы всегда будут отображаться, если система в режиме аудита. Плюс к этому, данная настройка находится в файле конфигурации загрузки, который находится на загрузочном разделе. При тиражировании образа только системного тома, данные настройки не сохранятся, команды отключения отображения процесса загрузки системы лучше добавлять в файл ответов запечатывания.


В наборе скриптов есть пример файла ответов для запечатывания с отключением отображения процесса загрузки OOBEAuto_HideBoot.xml


Отображение процесса входа пользователя в систему


Если необходимо, чтобы первое изображение, которое покажет система, было запускаемой оболочкой, то помимо отображения процесса загрузки системы нужно отключить отображение процесса входа пользователя в систему.


Режимы киоска


В устройстве фиксированного назначения обязательно нужно менять оболочку для пользователя, чтобы вместо оболочки системы запускалось одно приложение или группа приложений. Вы можете настроить запуск приложений любым способом, но Майкрософт предлагает специальные режимы для запуска приложений:


  • Shell Launcher V1 средство для запуска приложений. Запускает одно классическое приложение вместо оболочки системы и контролирует его работу. При закрытии приложения можно настроить: перезапуск приложения, перезагрузку системы, выключение системы.
  • Shell Launcher V2 во второй версии добавлена возможность запуска универсальных приложений.
  • Ограниченный доступ запуск одного универсального приложения вместо оболочки системы.
  • Режим мультикиоска запуск системы в режима планшета и отображение плиток заранее назначенных приложений.

Майкрософт не рекомендует использовать различные режимы киоска одновременно, но если настроить режимы так, чтобы они не мешали друг другу, то они могут работать и одновременно.


Shell Launcher V1


Для включения средства запуска оболочки нужно добавить компонент средства запуска оболочки в систему и заменить запуск стандартной оболочки explorer.exe на запуск средства запуска оболочки eShell.exe. Без настроек средство запуска оболочки будет запускать только командную строку, поэтому необходимо настроить средство запуска оболочки. В настройках по умолчанию можно указать приложение, которое будет запускаться для пользователя, которому не назначен запуск приложения. Плюс к этому, необходимо добавить настройку запуска оболочки системы для группы Администраторы т.к. при настройке запуска приложения для группы Пользователи у данной настройки будет приоритет выше, чем у настройки по умолчанию, следовательно, при отсутствии других настроек для группы Администраторы будет выполняться приложение, назначенное для группы Пользователи. Все эти настройки выполнит скрипт Shell Louncher при включении средства запуска оболочки.



Для настройки запуска приложения вместо оболочки системы необходимо выбрать в меню скрипта, для кого вы хотите настроить запуск оболочки для пользователя или для группы, а в следующем меню выбрать имя пользователя или группы. После выбора конкретного пользователя или группы откроется диалоговое окно для выбора запускаемого файла. После выбора запускаемого файла скрипт создаст в реестре ветку с SIDом выбранного пользователя или группы и пропишет в нее настройки запуска приложения. Скрипт всегда будет прописывать в параметре DefaultReturnCodeAction 0, что означает перезапуск приложения, если Вам необходимо, чтобы были выполнены другие действия при закрытии приложения, установите другое значение параметра DefaultReturnCodeAction. Допустимые параметры:


  • 0 перезапуск приложения
  • 1 перезагрузка
  • 2 выключение
  • 3 отсутствие действий

Программы будут запускаться без прав администратора. Проверить, с какими правами запущено приложение можно с помощью скрипта TestRunAs.bat, который находится в наборе скриптов в папке Tools. Просто укажите скрипт в качестве запускаемой программы.


Если Вам необходимо настроить запуск множества программ с отдельным контролем работы каждой запущенной программы или необходимо запускать программу от имени администратора, то можно настроить совместную работу средства запуска оболочки и планировщика заданий. Как это сделать можно посмотреть в нашей вики.


Созданные задачи в планировщике заданий не будут работать в режиме аудита.


Ограниченный доступ


Обратите внимание, что настроить режим ограниченного доступа можно только для тех учетных записей, которые находятся в группе Пользователи и не находятся в группе Администраторы. Запускаемое универсальное приложение нельзя закрыть или свернуть, в режиме ограниченного доступа будут заблокированы некоторые горячие клавиши. В данном режиме нет возможности выйти из учетной записи, есть возможность только заблокировать учетную запись и перейти на экран входа в систему. Если после перехода на экран входа в систему не будет никаких действий пользователя 30 секунд, то система автоматически вернется в учетную запись. Время ожидания действий пользователя можно изменить в параметре IdleTimeOut, подробнее об этом параметре можно узнать в соответствующем разделе нашей вики.


Напомню, что в дистрибутиве SAC есть браузер Edge, который можно использовать в режиме ограниченного доступа в различных режимах. Подробнее об этом можно прочитать в этой статье.



Режим мультикиоска


Режим мультикиоска можно посмотреть здесь. Настройке режима мультикиоска была посвящена отдельная статья, а здесь скажу об основных моментах. Для настройки мультикиоска был создан отдельный вспомогательный скрипт, который есть в статье посвященной настройке мультикиоска, позже он был интегрирован в общий набор скриптов. В наборе скриптов есть:


  • ExportTiles.bat для экспорта текущей конфигурации расположения плиток в меню Пуск. Экспорт производится сразу в двух режимах, с указанием ID приложений и указанием полного пути до запускаемого файла.
  • Примеры конфигурационных файлов для настройки
  • Файл ответов для запечатывания с решением проблемы запуска режима мультикиоска

Учтите, что примеры конфигурационных файлов для настройки мультикиоска рассчитаны только на применение к системе с помощью скрипта. ID профиля и конфигурации связаны простыми одинаковыми строками, перед применением конфигурации скрипт их автоматически поменяет на GUID. При этом в самих файлах конфигурации строки останутся в исходном виде.



У каждого свой путь


Типовые настройки, плюс один из режимов киоска, этого будет достаточно для многих решений, которые не рассчитаны на взаимодействие с пользователем. Хотя, с помощью некоторых настроек, которые будут рассмотрены в третьей части статьи, можно повысить отказоустойчивость системы.


А для устройств, которые рассчитаны на взаимодействие с пользователем, это только часть настроек. Для сенсорного экрана настроек немного, поэтому мы не будем их подробно рассматривать в статье. Можно отключить вызов контекстного меню и множественные касания, подробнее об этих настройках можно узнать здесь.


При дальнейшей настройке системы мы столкнемся с некоторыми особенностями настроек локальной групповой политики. Чтобы эти особенности были понятными, сделаем небольшое отступление и рассмотрим их.


Особенности настроек локальной групповой политики


Вся информация, описанная под данным заголовком, будет относиться только к ветке Административные шаблоны.


Изменять настройки локальной групповой политики можно разными способами:



При изменении настроек с помощью редактора локальной групповой политики изменения будут действовать на всех пользователей и в редакторе локальной групповой политики будет отображаться актуальное состояние настроек. При изменении настроек с помощью утилиты LGPO ситуация будет такая же.


При изменении настроек локальной групповой политики в реестре, актуальные настройки будут видны только в реестре. В редакторе локальной групповой политики будут отображаться неактуальные настройки. При этом изменения настроек конфигурации компьютера ветка реестра HKEY_LOCAL_MACHINE, будут действовать на всю систему. А изменения в конфигурации пользователя ветка реестра HKEY_CURRENT_USER, будут действовать только на ту учетную запись, в которой были внесены изменения.


В наборе скриптов есть скрипт LGPOMenu для автоматизации экспорта и импорта настроек локальной групповой политики.


Устройство с множеством пользователей


Если ваше решение будет рассчитано на множество пользователей, то у пользователей будет доступ на экран входа в систему для возможности входа в необходимую учетную запись. На экране входа в систему можно выборочно отключить элементы, которые находятся в правом нижнем углу. Настроить отображение элементов можно с помощью скрипта BrandingNeutral.



Если пользователю доступна клавиша Shift, обязательно отключите иконку управления питанием, т.к. при перезагрузке системы с удержанием Shift можно перейти в среду восстановления. Для отключения иконки выбора сетевого подключения есть отдельная настройка и отдельный скрипт для нее NetworkSelectionUI.


Если у пользователя будет возможность перехода на экран вызываемый по Alt + Ctrl + Del, необходимо выполнить и его настройку. Все отключенные иконки на экране входа в систему будут отключены и на экране, вызываемом по Alt + Ctrl + Del. Для отключения кнопок, находящихся над кнопкой Отмена, есть группа скриптов, которые находятся в папке Действия по Alt+Ctrl+Del. Во всей группе скриптов есть возможность изменить настройки для всех учетных записей или для конкретной учетной записи. При изменении настройки для всех учетных записей настройка будет изменена с помощью утилиты LGPO, а при изменении настройки только для текущего пользователя, настройка будет изменена в реестре.


Если пользователи не будут выходить из учетной записи, а будут просто блокировать ее, то данные незавершенной сессии будут оставаться в оперативной памяти. Во время использования устройства с другой учетной записью данные в незавершенных сессиях будут просто занимать оперативную память, что может привести к ее нехватке. Нехватка оперативной памяти замедлит работу устройства или может привести к некорректной работе системы. Для предотвращения такой ситуации можно запретить быстрое переключение между пользователями, тогда вход в другую учетную запись будет невозможен до завершения предыдущей сессии.


После запрета быстрого переключения между пользователями у пользователей будет возможность заблокировать систему, но после блокировки можно будет войти только в ту учетную запись, которая была заблокирована. Если для разных учетных записей пользователей установлены разные пароли, то блокировка учетной записи может привести к невозможности входа в систему другого пользователя, который не знает пароля от заблокированной учетной записи. Чтобы избежать такой ситуации, можно запретить блокировку компьютера.


Блокировку компьютера нельзя отключать для учетной записи с режимом ограниченного доступа, иначе режим ограниченного доступа перестанет работать. Это связано с тем, что назначенное приложение запускается поверх экрана блокировки. (по ссылке см. функцию Windows 10 Ограниченный доступ)


При выходе из учетной записи с открытыми программами, которые требуют реакции пользователя, система покажет экран остановки и сообщит о программах, которые требуют реакции пользователя. Медленно работающие системы могут показать экран остановки не сразу, а через некоторое время после попытки выхода. Это может привести к тому, что пока система будет думать, что ей делать, пользователь успеет уйти, а после его ухода система предложит закрыть открытые программы. Это может привести к входу в учетную запись без ввода пароля, чтобы это предотвратить, нужно отключить остановку завершения работы, тогда при выходе из учетной записи все программы будут закрыты без сохранения данных.


Устройство с одним пользователем


Самый распространенный вариант использования однопользовательского решения это запуск классического приложения с помощью Shell Launcher V1. Напомню, что для удобства настройки и обслуживания устройства, лучше настроить все ограничения не для конкретного пользователя, а для группы Пользователи, тогда установить и снять ограничения для пользователя можно будет простым переводом учетной записи из одной группы в другую. Т.е. запуск конкретного приложения вместо оболочки системы лучше настроить не для конкретного пользователя, а для группы Пользователи.


Но если в Shell Launcher V1 будут настройки для запуска конкретного приложения для группы Пользователи, то система не сможет загрузиться после запечатывания в режиме приветствия (OOBE). Обойти данную проблему поможет скрипт для запечатывания Sysprep, он временно отключит Shell Launcher V1 и создаст задачу на его включение после первой загрузки в режиме OOBE. Подробнее эту проблему мы рассмотрим в следующей части статьи.


На устройстве с одним пользователем можно не настраивать экран входа в систему и экран вызываемый по Alt + Ctrl + Del, достаточно просто лишить пользователя возможности перейти на эти экраны. Заблокировать Alt + Ctrl + Del и другие горячие клавиши нам поможет фильтр клавиатуры.


Фильтр клавиатуры


С включением и настройкой фильтра клавиатуры нам поможет скрипт Keyboard Filter из набора скриптов. При включении фильтра клавиатуры он добавит компонент фильтра клавиатуры и пропишет в реестр команду запуска службы фильтра клавиатуры при следующей загрузке системы.



Фильтр клавиатуры оказывает влияние на работу режима ограниченного доступа без какой-либо настройки. В режиме ограниченного доступа будут заблокированы горячие клавиши Alt + Ctrl + Del, перейти на экран входа в систему можно будет только при пятикратном нажатии клавиши разблокировки, по умолчанию это кнопка Win.


С помощью фильтра клавиатуры можно:


  • Запретить использование горячих клавиш специальных возможностей
  • Запретить использование комбинаций клавиш
  • Запретить ввод конкретных символов
  • Запретить использование конкретных клавиш
  • Назначить клавишу разблокировки системы

Обязательно заблокируйте горячие клавиши специальных возможностей, они не нужны для настройки системы, а пользователям дают избыточные возможности. Одна из таких горячих клавиш многократное нажатие клавиши Shift, чтобы убедиться, что горячие клавиши специальных возможностей отключены, можно проверить работу этой горячей клавиши до отключения горячих клавиш и после отключения.


Чтобы лишить пользователя возможности перехода на экран вызываемый по Alt + Ctrl + Del и на экран входа в систему, заблокируйте горячие клавиши Alt + Ctrl + Del.


Настройки фильтра клавиатуры находятся в реестре, для быстрого перехода к настройкам фильтра клавиатуры выберите пункт открытия настроек в меню скрипта. В ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Embedded\KeyboardFilter находится перечень клавиш и клавиатурных сочетаний, которые можно заблокировать, прописав значение Blocked.


При открытии настроек фильтра клавиатуры с помощью скрипта, в разделе KeyboardFilter скрипт создаст еще два подраздела CustomFilters и CustomScancodes.


В разделе CustomFilters можно добавить любые символы и клавиатурные сочетания, которых нет в разделе KeyboardFilter и заблокировать их. Учтите, что для блокировки горячих клавиш с использованием букв, необходимо указывать блокировку для имеющихся раскладок клавиатуры. Например, если в системе русская и английская раскладка, то для блокировки горячих клавиш Ctrl+X необходимо добавить еще и блокировку Ctrl+Ч, чтобы горячие клавиши не работали на русскоязычной раскладке.


В разделе CustomScancodes можно заблокировать конкретную клавишу, указав ее скан-код. Скан-код клавиши можно узнать с помощью программы SharpKeys. Чтобы узнать скан-код клавиши запустите программу SharpKeys, в окне программы нажмите на кнопку Add, после чего откроется новое окно программы, в нем нажмите на кнопку Type Key, а затем нажмите на клавишу, скан-код которой Вы хотите узнать. После нажатия на клавишу появится новое окно, в котором будет показан скан-код. В реестр нужно прописать те символы, которые указаны после нижнего подчеркивания.



Периодически начинающие задают вопрос, чем отличается блокировка символа и клавиши? При блокировке символа будет запрещен ввод именно символа, независимо от того, на какой клавише он находится. При блокировке символа Z можно будет вводить символ Я, хотя они находятся на одной клавише. При блокировке клавиши, которой назначен ввод символов Z и Я нельзя будет ввести ни один из этих символов, но если переназначить ввод этих символов на другую клавишу, то их можно будет вводить.


Ограничения фильтра клавиатуры будут действовать на всех пользователей, чтобы фильтр клавиатуры не блокировал клавиши администратору, нужно отключить действие фильтра клавиатуры на группу Администраторы.


Как правило, на устройствах фиксированного назначения не используется полноформатная клавиатура, используется либо цифровая, либо цифробуквенная часть. Чтобы лишить пользователя возможности перехода на экран входа в систему, необходимо назначить такую клавишу разблокировки, которой не будет у пользователя. Для изменения клавиши разблокировки необходимо прописать скан-код требуемой клавиши в значение параметра BreakoutKeyScanCode. Данный параметр находится в разделе KeyboardFilter. При необходимости отключить клавишу разблокировки в значении укажите 0.


Послесловие


В данной части описана базовая настройка для устройств фиксированного назначения, хотя в ряде случаев такой настройки может быть достаточно, особенно если Вы настраиваете устройство для сотрудников организации, где нужно предотвратить случайные сбои.


А если Вы настраиваете устройство для общего использования, то такой настройки вряд ли будет достаточно, в данном случае лучше предотвратить возможности намеренной порчи системы. На устройствах общего пользования довольно часто приходится видеть систему, настройки которой не рассчитаны на нештатные ситуации. Или у устройства есть общедоступные USB порты, работа которых никак не ограничена.


В следующей части мы рассмотрим возможные варианты повышения безопасности системы с помощью штатных средств, а именно: настройку блокировки запуска приложений по белому списку, блокировку работы устройств и защиту диска от записи.


Если у вас остались вопросы относительно настройки и лицензирования Windows 10 IoT Enterprise, обращайтесь по адресу mse@quarta.ru или на сайт quarta-embedded.ru. Ответы на некоторые вопросы Вы можете найти в нашей вики или на нашем YouTube-канале


Автор статьи: Борисенков Владимир, технический эксперт компании Кварта Технологии.

Подробнее..

Будни OEMщика (Часть 3)

30.09.2020 08:10:03 | Автор: admin

Для тех, кто не читал первую часть статьи, скажу, что в данной статье под OEMщиком подразумевается специалист, который занимается подготовкой Windows к тиражированию на множество устройств.


В этой части мы рассмотрим, как повысить безопасность и отказоустойчивость системы с помощью стандартных средств Windows: AppLocker, фильтр записи, блокировка устройств. Плюс к этому рассмотрим особенности запечатывания системы в режиме приветствия (OOBE) с некоторыми специфичными настройками системы.


Из первой части Вы узнали, как быстро создать и развернуть образ системы, в этой части этот навык пригодится больше всего, ведь мы будем экспериментировать с настройками повышения безопасности. При их неправильной настройке система может не загрузиться или при включении настройки в системе поменяется столько параметров, что проще будет развернуть ранее сохраненный образ системы, чем ее перенастраивать.


Во второй части статьи, мы рассмотрели базовые настройки устройства фиксированного назначения. В данной части мы будем рассматривать настройки безопасности в контексте ранее выполненных настроек. Поэтому, для успешного проведения экспериментов по описанию в статье, возьмите образ системы, который у Вас получился после второй части или настройте систему так, чтобы она соответствовала следующим требованиям:


  • С помощью скрипта настройки питания PowerSettings включена схема питания HORM
  • Система в режиме аудита
  • В системе есть две созданные учетные записи, одна только в группе Администраторы, вторая только в группе Пользователи
  • С помощью Shell Launcher V1 настроен запуск приложения для группы Пользователи

Напомню, что все настройки мы выполняем на Windows 10 IoT Enterprise версии 1809. Убедитесь, что у Вас именно эта версия системы, выполнив команду winver.



Если у Вас нет дистрибутива этой системы, то Вы можете скачать пробную версию.


И еще один нюанс, скрипты для настройки рассматриваемых возможностей в этой части находятся только в полном наборе скриптов. Полный набор скриптов Вам будет доступен при приобретении операционных систем линейки Windows 10 IoT в компании Кварта Технологии. Или вы можете попробовать настроить систему вручную, как описано в нашей вики.


Чтобы узнать о выходе новых версий скриптов с исправлениями и дополнениями, Вы можете подписаться на нашу рассылку или присоединиться к нашим группам в соцсетях.


Блокировка запуска приложений


Блокировка запуска приложений будет выполняться с помощью AppLockerа. Учтите, что правила AppLockerа не работают в режиме мультикиоска, т.к. в режиме мультикиоска по умолчанию запрещен запуск всех приложений, которые не разрешены. Чтобы правила мультикиоска и AppLockerа не конфликтовали, в режиме мультикиоска AppLocker не работает.


Блокировка запуска приложений не только усилит защиту от вредоносного ПО, а еще и не даст пользователю попасть куда не нужно, например, в настройки.


Появляется вопрос, как же так, во второй части статьи мы все пользователю блокировали, блокировали, да не заблокировали? На самом деле все дело в нюансах, запуск какого приложения мы настроили и при каких обстоятельствах оно будет работать.


Вот вполне реальный пример. Есть информационный киоск с сенсорным экраном. На киоске настроен режим киоска Shell Launcher V1, который запускает IE. IE настроен на запуск в полноэкранном режиме, кнопки управления окном скрыты, отключен вызов контекстного меню. IE отображает интернет-страницу.


И казалось, ничего не предвещало беды но судьба распорядилась по-другому.


Попробуйте отключить интернет на таком решении, IE Вам сообщит, что устройство не подключено к сети и предложит исправить проблемы с подключением. А из этой настройки пользователь сможет получить доступ к файловой системе и немного пошалить


Из этой ситуации можно сделать вывод, что при нештатной работе устройства существует вероятность запуска приложений, непредназначенных для пользователя. И самый простой выход из этой ситуации это настройка блокировки запуска приложений по белому списку, как в режиме мультикиоска.


Для проверки работоспособности блокировки приложений можно временно отключить фильтр клавиатуры, чтобы пользователь мог вызвать диспетчер задач по Ctrl + Shift + Esc и окно залипания клавиш по пятикратному нажатию Shift.


Для начала рассмотрим особенности настройки AppLockerа в целом теоретическая часть. А потом рассмотрим, как настроить правила запуска приложений по белому списку практическая часть.


Теоретическая часть


Перед включением AppLockerа нужно создать минимально необходимый набор правил для нормальной работы системы. Правила AppLockerа находятся в локальной групповой политике, по пути Конфигурация компьютера\Конфигурация Windows\Параметры безопасности\Политики управления приложениями\AppLocker.


Для AppLockerа необходимо создать правила по умолчанию для разделов Исполняемые правила и Правила упакованных приложений. Создать правила можно в контекстном меню раздела.



После создания правил по умолчанию можно включить AppLocker, для включения AppLockerа необходимо запустить службу AppIDSvc и перевести ее в автоматический режим запуска. Но AppLocker начнет работать не сразу, а после применения политики AppLockerа к системе. О том, что правила AppLockerа применены к системе, можно узнать из журнала AppLockerа Управление компьютером\Служебные программы\Просмотр событий\Журналы приложений и служб\Microsoft\Windows\AppLocker\EXE и DLL. После применения правил в журнале появится запись с кодом события 8001, в событии будет уведомление о том, что политика AppLockerа применена к системе.


Ветка лога Журналы приложений и служб открывается не сразу, ее открытие может занять некоторое время. Если открыть журнал до появления записи в журнале, то для обновления отображения состояния журнала необходимо нажимать F5.


Для создания новых правил исполняемых приложений можно выбрать пункт контекстного меню Создать новое правило, после чего откроется помощник создания правил.


Для правил AppLockerа можно настроить политику применения правил.



Если флажки не установлены, то правила находятся в ненастроенном состоянии Not configured, это значит, что правила будут применяться, если нет конфликтующих правил более высокого уровня.


Если флажки установлены, то есть возможность выбрать один из вариантов настройки. Принудительное применение правил к системе будут применены текущие правила. Только аудит можно запускать запрещенные приложения, но при запуске запрещенного приложения в журнал AppLockerа будет добавлена соответствующая запись, в которой будет указано, что данное приложение было бы запрещено.


На основании записей результатов аудита можно создать правила для AppLockerа, причем это можно сделать автоматически с помощью консольных команд управления AppLockerом.


Настройка в редакторе локальной групповой политики больше подходит для настройки по черному списку, т.е. будет разрешен запуск всех приложений, кроме тех, которые явно незапрещены.


Практическая часть


Для настройки по белому списку будем использовать скрипт AppLocker, который находится в наборе скриптов.


Включите AppLocker, выбрав соответствующий пункт меню. Скрипт проверит, есть ли минимально необходимые правила для AppLockerа, если их нет, то он предложит их создать. При подтверждении скрипт создаст правила, где разрешен запуск всех программ только для группы Администраторы, а для группы Пользователи правила не прописаны, т.е. запрещен запуск всех программ. После создания правил скрипт запустит службу AppIDSvc и настроит ее автоматический запуск.


Если Вы согласны с предложением скрипта создать правила, просто нажмите Enter.


Чтобы узнать, что AppLocker начал работать, просто обновите информацию об AppLockerе, выбрав соответствующий пункт меню.



Когда AppLocker начнет работать, выберите пункт изменения политики правил и включите режим аудита.


Важно учесть, что при настройке правил для пользователя по белому списку необходимо делать все так же, как это будет делать пользователь. Если Вы планируете настроить автоматический вход в учетную запись пользователя при загрузке системы, то именно так и нужно войти в учетную запись в режиме аудита. Поэтому выполните команду netplwiz и отключите требование ввода учетных данных для пользователя. После включения автоматического входа перезагрузите систему.


Когда система загрузится, выполнит вход в учетную запись пользователя и запустит назначенное приложение вместо оболочки системы, перейдите в учетную запись администратора, запустите скрипт настройки AppLockerа, выберите пункт выбора группы для создания правил AppLockerа. В пункте выбора группы выберите группу Пользователи (Users).


После создания правил вернитесь в главное меню скрипта и выберите пункт отображения правил AppLockerа. У меня для пользователя был настроен запуск Tools\TestRunAs.bat, который находится в наборе скриптов, я получил вот такой набор правил.



Первые два правила для группы Administrators создал скрипт перед запуском AppLockerа. Остальные правила, с приставкой AuditBased, скрипт создал на основании результатов аудита. При желании Вы можете изменить приставку, которая добавляется к создаваемым правилам, для этого нужно просто поменять в скрипте AppLocker.ps1 значение параметра -RuleNamePrefix. Этот параметр легко найти с помощью поиска Ctrl + F.


Теперь посмотрим, что у нас получилось. Измените политику применения правил на принудительное применение правил и перезагрузите систему. Когда система загрузится, и запустится назначенное приложение вместо оболочки системы, попробуйте вызвать диспетчер задач с помощью Ctrl + Shift + Esc или открыть окно настройки залипания клавиш с помощью пятикратного нажатия Shift.



Учтите, что при создании правил на основании результатов аудита создаваемые правила добавляются к уже существующим правилам. Поэтому перед следующей настройкой очистите журнал AppLockerа, иначе новые правила будут созданы с учетом старых данных журнала. Для очистки журнала AppLockerа есть соответствующий пункт скрипта.


Правила AppLockerа можно сохранить в отдельный файл и применить их к другой системе. Обратите внимание, что можно добавить правила к уже существующим правилам или заменить существующие правила новыми. При замене правил, помимо самих правил, будут установлены и политики применения правил, которые были указаны в сохраненном файле.


После настройки AppLockerа отключите автоматический вход пользователя в систему.


Если захотите запечатать систему в режиме аудита с включенным AppLockerом, когда правила настроены по белому списку, то учтите, что после загрузки системы панель задач будет работать только во встроенной учетной записи Administrator, в которую система загрузится автоматически. Для восстановления работы панели задач в других учетных записях, просто отключите, а затем снова включите AppLocker с помощью скрипта.


Запечатываем систему в режиме приветствия OOBE


Если Вы хотите сохранить текущие настройки системы, то перед дальнейшими действиями сохраните образ системы в режиме аудита, как это было описано в первой части статьи.


В обычном режиме работы системы мы посмотрим на те настройки, которые не работают в режиме аудита. А именно:


  • Блокировка устройств
  • Отключение отображения процесса загрузки системы
  • Фильтр записи

Небольшое уточнение, фильтр записи будет работать в режиме аудита, но в режиме аудита не выполняются задачи, которые прописаны в планировщике заданий, а такая задача очень пригодится при работе фильтра записи. В режиме аудита можно добавить компонент фильтра записи и настроить его, но включать его не нужно.


Теперь запечатывать систему обязательно нужно с помощью скрипта для запечатывания. В первой части статьи я написал часть того, что делает скрипт при запечатывании в разделе Для чего нужен скрипт для запечатывания, а сейчас немного дополню.


Сейчас система настроена для комфортного обслуживания. Для дополнительных настроек учетной записи пользователя достаточно учетную запись пользователя перевести из группы Пользователи в группу Администраторы, и с учетной записи пользователя будут сняты все ограничения:


  • Вместо назначенного приложения будет запущена оболочка системы
  • Не будет ограничений фильтра клавиатуры
  • AppLocker разрешит запускать любые приложения.

Для этого мы и настраивали все ограничения именно для группы. Но всякое решение плодит новые проблемы


Мюллер шел по улице. Вдруг ему на голову упал кирпич.
"Вот тебе раз," подумал Мюллер.
"Вот тебе два," подумал Штирлиц, бросая второй кирпич.


При тиражировании системы ее обязательно нужно запечатать для сброса уникальных SIDов системы и обязательно в режиме приветствия, не использовать же систему в режиме аудита. Но если настроен режим киоска Shell Launcher V1 с указанием запуска приложения именно для группы Пользователи, то система не сможет загрузиться в режиме приветствия.


Если правила AppLockerа настроены по белому списку, и в правилах для пользователя нет разрешения на запуск приложений, которые запускаются при прохождении OOBE, то система не загрузится в режиме приветствия.


Перед запечатыванием системы в режиме OOBE скрипт проверяет настройки Shell Launcherа и AppLockerа. Если настройки будут препятствовать загрузке системы в режиме приветствия, то скрипт предложит временное отключение этих настроек. Настройки AppLockerа и Shell Launcherа будут проверены отдельно друг от друга, и для каждой настройки отдельно будет предложено временное отключение. При подтверждении отключения настроек скрипт отключит их и создаст задачу на их включение, задача будет выполнена после входа в учетную запись при первой загрузке после запечатывания, после включения настроек система будет перезагружена еще раз.


Чтобы не отвечать на вопросы системы при загрузке в режиме приветствия, используйте файл ответов для запечатывания OOBEAuto.xml, который есть в наборе скриптов.


После запечатывания системы в режиме приветствия сохраните образ системы, у нас еще будут настройки, при которых что-то может пойти не так.


Ограничение установки драйверов


Если у устройства есть общедоступные USB порты, которые нельзя отключить в BIOSе, то появляется потенциальная угроза безопасности, ведь кто угодно может подключить любое USB устройство и его использовать. Для минимизации подобных рисков можно воспользоваться возможностью ограничения установки драйверов. Данную возможность можно использовать и для запрета автоматического обновления драйвера, если новый драйвер приводит к некорректной работе системы.


Данная возможность не работает в режиме аудита.


Группа настроек, отвечающих за ограничение установки и использования драйверов, находится в локальной групповой политике в разделе Ограничение на установку устройств. С помощью данной группы настроек можно запретить установку новых драйверов или запретить работу уже установленных драйверов, поэтому название Ограничение установки драйверов лучше отражает суть данной возможности.


Для лучшего понимания возможностей данных настроек сначала рассмотрим их в локальной групповой политике, а затем рассмотрим настройку с помощью скрипта DriverRestrictions, который находится в наборе скриптов.


Настройка в локальной групповой политике


Настройка ограничения установки устройств находится в локальной групповой политике. Конфигурация компьютера\Административные шаблоны\Система\Установка устройства\Ограничение на установку устройств



Можно запретить установку устройства по ID устройства или по GUIDу класса оборудования. После запрета установки устройств нельзя будет установить драйвер, который соответствует указанному GUIDу класса или указанному ID оборудования. При этом ранее установленный драйвер будет работать.



ID устройства можно указывать не полностью, сопоставление ID в правилах с ID в системе будет производиться по частичному совпадению с начала строки. Правило запрещения устройства с ID PCI\VEN_8086&DEV_9D23 будет запрещать все устройства по маске PCI\VEN_8086&DEV_9D23*, т.е. устройство с ID PCI\VEN_8086&DEV_9D23&SUBSYS_8079103C&REV_21\3&11583659&0&FC будет запрещено.


Если в системе настроен запрет на установку новых драйверов, и будет подключено новое устройство, для которого уже есть драйвер в системе, то подключенное устройство будет работать.


При необходимости запретить работу уже установленного драйвера, нужно установить флажок Также применить для соответствующих устройств, которые уже были установлены. Данная настройка будет распространяться на весь перечень указанных устройств. Эту возможность можно настроить отдельно для списка запрещенных ID и GUIDов классов. Будьте внимательны при установке запретов на работу уже установленных драйверов по GUIDу класса. Например, GUID класса флэшки может совпадать с GUIDом класса SSD, на котором установлена система, при установке запрета на работу уже установленного драйвера с таким GUIDом система не сможет загрузиться.


Установленные запреты распространяются на всех пользователей, в том числе и на администраторов. Чтобы снять все ограничения для администратора, можно включить настройку Разрешить администраторам заменять политики ограничения установки устройств. Если эта настройка нужна для обхода запрета использования установленного драйвера, то для возобновления работы устройства нужно просто выполнить автоматический поиск драйвера. Учтите, что после возобновления работы устройства оно будет доступно для всех пользователей, поэтому после обслуживания устройства нужно отключить разрешение для администраторов заменять политики ограничений.


Добавление ID и GUIDов классов в перечень запрещенных это настройка по черному списку, для настройки правил по белому списку нужно включить настройку Запретить установку устройств, не описанных другими параметрами политики. После включения данной настройки будет запрещена установка новых драйверов, для которых не настроено явного разрешения. Работа установленных драйверов будет разрешена. При необходимости устанавливать драйверы на некоторые устройства, их можно добавить в разрешенные по ID и GUIDов классов.


Настройка с помощью скрипта



Если Вы хотите поэкспериментировать с отключением устройств, для наглядности откройте диспетчер устройств и расположите окна так, чтобы перечень устройств был виден, когда окно скрипта находится поверх диспетчера устройств.


При выборе пунктов разрешения или запрета установки драйверов по ID или по GUIDу класса, скрипт покажет таблицу с перечнем текущих устройств, которые еще не добавлены в правила выбранного параметра. При составлении таблицы с перечнем ID, после получения перечня всех устройств скрипт исключает ID, которые начинаются с: PRINTENUM, ROOT, SW, ACPIAPIC, MONITOR. При необходимости, перечень исключаемых ID можно изменить в функции Add-Devices. У оставшихся ID будут отброшены окончания: &SUBSYS, &REV, &CC вместе со всеми символами после этих окончаний.



С помощью фильтра можно найти устройство по частичному совпадению, поиск которого будет по всем столбцам таблицы. В таблице можно выбрать более одного устройства. Для добавления выбранных устройств в правило нужно нажать OK.


При выборе пункта отображения и удаления текущих правил скрипт покажет таблицу с текущими правилами. В этой таблице будут отображены правила всех параметров. В столбце Param значение указывает на тип правила, разрешающее или запрещающее и на основании чего настроено правило по ID устройства или GUIDу класса. В столбце Value отображается ID устройства или GUID класса, по которому настроено правило. Для удаления правил нужно выбрать одно или множество правил, которые необходимо удалить и нажать OK.



После удаления правил скрипт будет автоматически включать отключенные устройства. Но при включении разрешения замены правил для администраторов нужно будет вручную обновлять драйверы отключенных устройств.


Запретить работу уже установленных драйверов можно с помощью пунктов включения / отключения запрета к установленным драйверам.


С помощью пунктов отключения разрешения или запрещения по ID или GUID можно удалить все правила, которые относятся к конкретной настройке, а с помощью пункта сброса настроек можно сбросить все настроенные правила для устройств.


Фильтр записи


С помощью фильтра записи можно защитить данные от изменения на определенных томах несъемных дисков. На защищенных томах можно настроить места исключения, где данные не будут защищены.


Важно!!!


  1. Включать фильтр записи необходимо непосредственно на конечном устройстве после активации системы.
  2. При включении фильтра записи изменяются некоторые настройки системы, но при выключении фильтра записи измененные настройки не возвращаются в исходное состояние.
  3. Нельзя запечатывать систему с включенным фильтром записи.

По ряду причин Вам может потребоваться защита данных на жестком диске, например, пользователи сбивают настройки специализированного ПО и не могут их восстановить без посторонней помощи. Или из специализированного ПО можно получить доступ к файловой системе, где можно удалить данные. Фильтр записи позволяет вернуть данные в исходное состояние с помощью простой перезагрузки системы.


А вот непридуманная ситуация. Некоторые работники каждое утро тратят 30 40 минут на то, чтобы открыть все необходимые окна в специализированном ПО, сделать их определенного размера и расставить их в определенном порядке. Эту проблему можно решить с помощью функции HORM, которая есть в фильтре записи.


Данный раздел тоже разделим на теоретическую и практическую части. В теоретической части рассмотрим работу фильтра записи в целом, и какие у него есть настройки, а в практической части рассмотрим, как его настроить, естественно для настройки будем использовать скрипт.


Теоретическая часть


Фильтр записи необходим для сохранения данных в исходном состоянии. Можно выделить две основные функции:


  1. Защита данных от изменений на несъемных носителях
  2. Загрузка системы в определенное состояние из файла гибернации режим HORM
    Сначала рассмотрим работу фильтра записи с настройками по умолчанию, а затем рассмотрим, какие еще есть варианты настройки и для чего они нужны.

Если включить фильтр записи с защитой всех томов несъемных дисков, то получится следующая схема.



Все операции чтения / записи будут осуществляться между системой и оверлеем. Оверлей буфер временного хранения данных, который будет очищен после перезагрузки. По мере записи данных в оверлей он будет заполняться, нельзя допускать полного заполнения оверлея, иначе система перестанет нормально работать. По умолчанию размер оверлея 1024 MB.


Если данные записать, а потом удалить, то оверлей будет очищен частично, для полной очистки оверлея требуется перезагрузка системы. При заполненном оверлее система не сможет выполнить программную перезагрузку, т.к. попадет в цикл записать сведения о перезагрузке, если запись не удалась, вернуться на предыдущий шаг. Поэтому перезагружать систему нужно до заполнения оверлея.


На защищаемых томах можно настроить места исключения из защиты, в таких местах будут сохраняться изменения данных. При записи данных в места исключения операции чтения / записи все равно будут проходить через оверлей, поэтому оверлей будет заполняться.


У фильтра записи есть уведомления об уровнях заполненности оверлея, это порог предупреждения по умолчанию 512 MB и критический порог по умолчанию 1024 MB. При достижении определенного порога в журнал системы будут внесены определенные записи. Журналы Windows > Система.


Overlay usage Source Level Event ID
Warning threshold uwfvol Warning 1
Critical threshold uwfvol Error 2
Back to normal uwfvol Information 3

Чтобы избежать заполнения оверлея, можно создать задачу на перезагрузку системы, которая будет выполнена при появлении записи в журнале о достижении определенного порога.


В настройках фильтра записи можно изменить размер оверлея и уровень порогов. При изменении размера оверлея учтите, что под оверлей сразу выделяется объем памяти равный объему оверлея, который будет недоступен системе. Не забывайте оставлять минимально необходимый объем памяти для работы самой системы.


Оверлей может быть в оперативной памяти или на жестком диске. Если оверлей на жестком диске, то помимо обычного режима работы оверлея, который мы рассмотрели, будет доступен режим сквозной записи, который будет включен по умолчанию при переключении оверлея на жесткий диск.



В режиме сквозной записи все данные будут записываться в свободное место на жестком диске, а в оверлей будет записываться служебная информация системы и сведения о данных, записанных в свободное место на жестком диске. Если данные записать, а потом удалить, то место на жестком диске будет освобождено, а место в оверлее почти не будет использоваться. Таким образом можно существенно сократить количество необходимых перезагрузок. При перезагрузке все изменения будут удалены, включая данные, записанные в свободное место на жестком диске.


И еще одна особенность оверлея на HDD режим постоянного оверлея. Данный режим подразумевает сохранение данных в оверлее после перезагрузки системы. А для очистки оверлея перед перезагрузкой необходимо выполнить команду, которая сообщит фильтру записи о необходимости очистить оверлей.


Появляется вопрос, если вся система защищена, то как установить обновления, если они нужны? У фильтра записи для этого есть сервисный режим. Для перевода в сервисный режим необходимо выполнить команду uwfmgr servicing enable и перезагрузить систему. В сервисном режиме система сама загрузит и установит обновления, а затем перезагрузится в нормальном режиме работы.


Есть еще некоторые особенности обслуживания устройств с включенным фильтром записи.


HORM


HORM Hibernate Once/Resume Many (HORM). Принцип работы HORMа понять очень просто. Все наверно знают, как работает режим гибернации. При переводе системы в режим гибернации все данные из оперативной памяти записываются на жесткий диск в файл hiberfil.sys, а при включении ПК все данные из файла hiberfil.sys записываются в оперативную память. HORM работает точно так же, только есть одно маленькое но, Вы вводите систему в режим гибернации один раз, а в дальнейшем при каждой загрузке система всегда записывает данные из hiberfil.sys в оперативную память. При этом не важно, как была завершена работа системы выключением или перезагрузкой. Только учтите, что фильтр записи не защищает файл гибернации, поэтому нужно отключить все способы перевода системы в режим гибернации кроме консольного.


С настройками по умолчанию после пробуждения системы необходимо вводить учетные данные пользователя. При необходимости можно отключить запрос учетных данных при выходе из режима гибернации. В плане питания HORM, который можно установить с помощью скрипта PowerSettings, запрос учетных данных при выходе из режима гибернации отключен.


Для работы режима HORM есть ряд требований:


  1. Все тома несъемных носителей должны быть защищены
  2. Не должно быть никаких исключений из защиты в реестре и файловой системе
  3. Оверлей должен быть в оперативной памяти.

Настраиваем фильтр записи


Перед настройкой фильтра записи необходимо добавить компонент фильтра записи. Вся настройка фильтра записи производится в командной строке с помощью утилиты uwfmgr.exe. Базовые возможности фильтра записи можно настроить с помощью скрипта UnifiedWriteFilter, который находится в наборе скриптов.



Для отображения текущего состояния фильтра записи добавьте компонент фильтра записи и перезагрузите систему. Если Вам недостаточно параметров настроек, которые отображает скрипт, можно отобразить текущие настройки, выбрав соответствующий пункт меню скрипта, тогда будут показаны настройки, которые отображаются при выполнении команды uwfmgr get-config.


С помощью пункта установки размера оверлея можно переключать размер оверлея между размером по умолчанию и максимально возможным размером. Это возможность скрипта, такой возможности нет в стандартных настройках. Максимально возможный размер вычисляется следующим образом. Скрипт получает объем оперативной памяти и вычитает минимально необходимый объем для данной системы. 1 ГБ для x32 и 2ГБ для x64. При изменении объема оверлея будут автоматически изменены пороги предупреждения.


С помощью пункта изменения уровня порогов можно изменять уровень порогов межу стандартным и рекомендуемым. Это возможность скрипта, такой возможности нет в стандартных настройках. Стандартные уровни порогов: 50% от объема оверлея порог предупреждения, 100% от объема оверлея критический порог. Рекомендуемые пороги предупреждения отличаются для реального и виртуального ПК. Для реального ПК: 80% от объема оверлея порог предупреждения, 90% от текущего объема оверлея критический порог. Для виртуального ПК: 10% от объема оверлея порог предупреждения, 20% от текущего объема оверлея критический порог. При необходимости Вы можете сами изменить в скрипте % уровня порогов от оверлея, за них отвечают переменные WarningThresholdGlobal и CriticalThresholdGlobal.


В верхней части информации о настройках фильтра записи отображается наличие задачи на перезагрузку системы при достижении критического порога и наличие задачи на включение фильтра записи после активации системы. Наличие этих задач будет отображаться, если они установлены с помощью соответствующих пунктов скрипта. Это возможность скрипта, такой возможности нет в стандартных настройках.


Некоторые настройки фильтра записи вступают в силу только в следующей сессии. Под следующей сессией подразумевается следующая загрузка системы с включенным фильтром записи. В перечне защищенных томов все тома указываются в квадратных скобках, пустые квадратные скобки обозначают том без буквы.


Пункт планирования гибернации нужен для перевода системы в режим гибернации через заданное время, данная возможность нужна при настройке режима HORM. Как я и говорил ранее, чтобы файл гибернации не был перезаписан, необходимо оставить только одну возможность перевода системы в спящий режим, с помощью консольной команды. Но при выполнении команды перехода в режим гибернации система сразу перейдет в режим гибернации, даже не дав закрыть консольное окно. Чтобы было время на то, чтобы привести систему в желаемое состояние, можно запланировать выполнение команды на гибернацию в определенное время. Это возможность скрипта, такой возможности нет в стандартных настройках.


Периодически бывают вопросы, как посмотреть содержимое оверлея, для этого в скрипт добавлен пункт отображения оверлея системного диска. Он добавлен как пример и реализован с помощью Unified Write Filter WMI т.к. содержимое оверлея нельзя посмотреть с помощью утилиты uwfmgr.


А теперь ближе к практике


После добавления компонента фильтра записи добавьте задачу на перезагрузку с помощью соответствующего пункта меню скрипта. Измените уровни порогов на оптимальный. И защитите все тома несъемных дисков. Перезагрузите систему, чтобы настройки вступили в силу.


Для наглядной демонстрации работы фильтра записи, в наборе скриптов, рядом со скриптом настройки фильтра записи находится утилита VirusEmulator.exe. Утилита размещает на рабочем столе указанное количество своих ярлыков. Если фильтр записи включен и защищает системный диск, то после перезагрузки все ярлыки исчезнут.



Для проверки работы автоматической перезагрузки скопируйте на диск файл, который больше уровня критического порога и система перезагрузится автоматически. Можно попробовать скопировать файл объемом больше оверлея, но медленные системы не всегда успевают перезагрузить систему до заполнения оверлея, тогда система покажет экран с надписью Перезагрузка и не сможет перезагрузиться. Такой системе потребуется жесткая перезагрузка.


Чтобы посмотреть на поведение системы в режиме HORM, включите режим HORM, выбрав соответствующий пункт меню скрипта. После успешного включения режима HORM, выберите пункт планирования гибернации, а затем введите через сколько минут нужно перевести систему в режим гибернации. После того, как будет запланирован переход в режим гибернации, приведите систему в то состояние, в котором ее необходимо загружать каждый раз.


Если Вы захотите выключить фильтр записи, когда у вас включен режим HORM, то сначала необходимо выполнить команду на отключение режима HORM, а затем выполнить команду на отключение фильтра записи. Но если Вы будете отключать фильтр записи с помощью скрипта, то скрипт автоматически отключит HORM перед выключением фильтра записи.


Послесловие


При настройке устройств фиксированного назначения на Windows 10 IoT Enterprise необходимо знать о ее специальных возможностях. Не исключено, что использование специальных возможностей позволит сэкономить на дополнительном ПО, которое может являться аналогом возможностей, которые уже есть в системе. Не исключено, что у дополнительного ПО могут быть преимущества перед стандартными средствами Windows, но, когда Вы что-то покупаете, необходимо понимать, за что именно Вы платите деньги. С помощью набора скриптов можно довольно быстро настроить специальные возможности Windows и сравнить их со сторонним ПО, чтобы принять взвешенное решение.


Но в некоторых случаях встроенных возможностей системы явно недостаточно, например, когда требуется специальная защита с централизованным управлением этой защиты. Или требуется централизованно отслеживать состояние тысяч или десятков тысяч устройств. Но это уже совсем другая история


Если у вас остались вопросы относительно настройки и лицензирования Windows 10 IoT Enterprise, обращайтесь по адресу mse@quarta.ru или на сайт quarta-embedded.ru.
Ответы на некоторые вопросы Вы можете найти в нашей вики или на нашем YouTube-канале


Автор статьи: Борисенков Владимир, технический эксперт компании Кварта Технологии.

Подробнее..

Что нового в Windows 10 October 2020 Update

27.10.2020 10:11:01 | Автор: admin


Этот год продолжает приносить перемены для многих из нас. Новое в том, как мы взаимодействуем друг с другом, как работаем, как учимся и даже как развлекаемся. И эти перемены уже ощущаются как что-то постоянное. Дети возвращаются в школу, но и адаптируются к дистанционному обучению и удаленному общению со своими учителями и одноклассниками, а рабочие места становятся гибридными. В таких условиях компьютер стал важным устройством, позволяющим нам продолжать заниматься тем, чем мы занимались раньше: он стал нашим офисом, нашим классом, даже нашей игровой площадкой. Мы вместе с вами живем в этих условиях, адаптируемся к ним и учимся на новом опыте, и наша приверженность вам, нашим клиентам, остается неизменной. Мы знаем, что вы рассчитываете на нас и на Windows, чтобы не терять связь с тем, что важно.

Выполняя это обязательство, мы рады поделиться функциями и улучшениями, которые появятся в обновлении Windows 10 October 2020 Update, о многих из которых просили вы сами, чтобы работать в Windows было еще удобнее. Среди новых функций любимая пользователями комбинация клавиш Alt + Tab, которая теперь позволяет получать доступ к вкладкам Microsoft Edge, оптимизированный дизайн меню Пуск и многое другое. Если вы хотите узнать, как получить обновление,прочитайте эту статью (в англоязычном блоге).



Новшества в Windows 10 October 2020 Update


Microsoft Edge


С этим обновлением поставляется самая свежая и лучшая версиянового браузера Microsoft Edge. С момента запуска в январе мы наблюдаем феноменальный рост использования и очень рады, что этот браузер включен в обновление. Если вы еще не пробовали новый Microsoft Edge, вам стоит запустить его и попробовать, потому что мы создали лучший браузер, обеспечивающий более высокую производительность и конфиденциальность, и приносящий больше пользы во время просмотра веб-страниц. Если вы уже используете наш новый браузер, значит, вы на собственном опыте убедились, насколько он быстрый, а мы добавляем новые замечательные функции каждые шесть недель.

ПопробуйтеКоллекции, с помощью которых можно легко сохранять найденный в Интернете контент и делиться им. Коллекции идеально подходят для праздничных покупок, школьных исследований и даже планирования похода следующей весной. Они работают и на ПК, и на мобильных устройствах, поэтому всегда будут синхронизированы. Мы также добавили функцию сравнения цен, чтобы вы могли легко найти лучшую цену, когда добавляете товар в коллекцию, это очень пригодится для похода по магазинам перед праздниками. И мы с гордостью можем сказать, что Microsoft Edge лучший браузер для совершения новогодних покупок в этом году.



В этом обновлении вы также получаете следующие новые функции, доступные только в Microsoft Edge для Windows 10:

  • Alt+Tab= быстрый способ перехода к приложениям и вкладкам браузера.С помощью этого удобного сочетания клавиш вы теперь можете легко переходить не только к приложениям, которые запустили на рабочем столе, но и к открытым в Microsoft Edge вкладкам.
  • Все вкладки, которые вы искали.Если вы любите закреплять избранные веб-сайты на панели задач, вам понравится эта новая функция. Теперь, если навести указатель мыши на значок веб-сайта, вы увидите все открытые вкладки этого сайта.

Обновления меню Пуск, панели задач и многого другого




  • Новый Пуск.Дизайн меню Пуск стал более упорядоченным. Единообразный, полупрозрачный фон плиток создает прекрасную сцену для переработанных иконок приложений, таких какКалькулятор,ПочтаиКалендарь. Этот улучшенный дизайн отлично смотрится и в темной, и в светлой теме, но если вы хотите добавить цвета, то сначала установите темную тему Windows, а затем включите параметр отображения контрастного цвета Show accent color on the following surfaces для элемента Start, taskbar, and action center (Меню Пуск, панель задач и центр уведомлений) в разделеПараметры > Персонализация > Цвет(Settings > Personalization > Color), чтобы элегантно применить выбранный цвет к плиткам и рамке меню Пуск.
  • Улучшенные Параметры.Раздел Параметры продолжает становиться более удобным местом для доступа к настройкам безопасности и устройства. Кроме прочего, теперь в разделеПараметры> Система> Экран, Дополнительные параметры экрана(Settings > System > Display, Advanced display settings) можно изменить частоту обновления экрана. Более высокая частота обновления обеспечивает более плавное движение визуальных элементов, и в зависимости от того, какой у вас экран или монитор, вы можете улучшить отображение контента на нем, что особенно пригодится для игр.
  • Устранение всплывающих уведомлений на устройствах 2-в-1.Устройства 2-в-1 теперь сами по умолчанию переключаются в новый режим планшета, не отвлекая вас, без всплывающего уведомления с просьбой переключиться в этот режим, когда вы отсоединяете клавиатуру.
  • Заметные уведомления.Теперь в верхней части уведомлений отображаются логотипы приложений, чтобы было проще понять, что за уведомление вы получили. А новая функция X marks the spot позволяет быстро кликнуть, закрыть уведомление и вернуться к тому, чем вы занимались.
  • Панель задач, настроенная по вашему вкусу.У вас новый ПК под управлением Windows? Вам понравится более понятное, персонализированное по умолчанию окружение, в котором панель задач настроена специально для ваших нужд, менее загромождена и содержит больше нужных вам элементов. (Эта возможность предоставляется при создании новой учетной записи или при первом входе в систему).

Обновления для коммерческих пользователей и пользователей из образовательных учреждений


Кроме улучшенного взаимодействия с системой, коммерческие пользователи и пользователи из образовательной сферы получают повышенную безопасность и усовершенствованное управление. Обновления функций включают более детальный контроль управления мобильными устройствами (Mobile Device Management, MDM)1, повышенную безопасность входа и защиту на основе виртуализации для Microsoft Edge и Office. ИТ-специалисты и конечные пользователи, работающие или обучающиеся удаленно или на местах, получат более простую и безопасную систему, выбрав последнюю версию Windows 10 Pro или Windows 10 Education.

  • Упрощенное управление устройствами.Система управления мобильными устройствами (Mobile Device Management, MDM)[1]теперь включает политики локальных пользователей и групп, которые дают администраторам те же возможности, что и групповая политика на локальных системах.
  • Безопасный биометрический вход.Благодаря усиленной системе безопасности входа[2]Windows Hello[3]теперь предлагает дополнительную защиту на основе виртуализации для определенных датчиков распознавания лица и отпечатков пальцев, которая позволяет обеспечить безопасность и изолировать данные биометрической аутентификации пользователя.
  • Более надежная защита приложений.Windows Defender Application Guard (WDAG)[4]теперь помогает защищать Microsoft 3654и Microsoft Edge с помощью уникальной стратегии аппаратной изоляции. WDAG защищает корпоративные данные, открывая сайты и файлы Office из ненадежных источников в виртуализированном контейнере.



  • Персонализированная страница вкладок в новомMicrosoftEdge. ИТ-администраторы могут помочь сотрудникам, учащимся и учителям персонализировать их новую страницу вкладок в Microsoft 365[5]. Теперь люди смогут быстрее получать доступ к своим файлам и избранным приложениям Microsoft 365, просто открывая новую вкладку в браузере.

Подробнее о том, что это обновление предлагает ИТ-специалистам,читайте здесь.

Мы по-прежнему считаем, что Windows это самая мощная, продуктивная и безопасная система, с помощью которой каждый из нас может наилучшим образом работать, развлекаться, учиться и общаться. Мы рады поделиться новейшими функциями, которые предлагает обновление Windows 10 October 2020 Update. Мы также хотим сказать большое спасибо нашему сообществу участников программы предварительной оценки Windows, которое предоставляло важные отзывы в процессе разработки этого обновления.



[1]Требуется Azure AD или Microsoft 365. Продается отдельно. Подробнее об управлении мобильными устройствами: docs.microsoft.com/windows/client-management/mdm

[2]Для усиленной безопасности входа требуются специализированные аппаратные и программные компоненты, которые можно использовать на устройствах, поставляемых с Windows 10 October 2020 Update и настроенных производителем. Документация будет доступна позже в этом году.

[3]Для Windows Hello со специализированным биометрическим оборудованием требуется сканер отпечатков пальцев, ИК-датчик с подсветкой или другой биометрический датчик. Для аппаратной защиты учетных данных и ключей Windows Hello требуется TPM 1.2 или более поздней версии. Если модуль TPM отсутствует или не настроен, защита данных и ключей будет программной. Для защиты ключей на основе TPM требуется TPM 1.2 или более поздней версии.

[4]Только для Windows 10 Enterprise.

[5]Требуется подписка Microsoft 365 E5; продается отдельно.
Подробнее..

Из песочницы CIFS over SSH штатными средствами Windows 10

17.11.2020 00:09:32 | Автор: admin

Я ленивый и потому люблю когда все организовано удобно, без лишних телодвижений. Иногда перебарываю лень, для того чтобы сделать удобно.


Однажды в потребовалось мне организовать доступ к серверу по протоколу SMB и в поиске решения я наткнулся на следующую статью: Mounting your Nikhef home directory using SSH for Windows 8. Это было простое и удобное решение, которое использовало Putty. Чуть позже мне пришлось настраивать это решение на другом компьютере и я понял, что Putty тут лишний с тех пор как в Windows 10 появился встроенный ssh-клиент на основе OpenSSH.


Под катом идентичная схема, только с использованием OpenSSH под Windows 10.


У меня схема организована следующим образом:


  1. На сервере запущена Samba, от имени пользователя www-data расшарена корневая папка с сайтами. Доступ к серверу только через ssh с авторизацией по ключу. Сервер за NATом, порт проброшен только для ssh.
  2. В процессе входа в аккаунт на домашней машине на Windows 10 через встроенный в систему OpenSSH устанавливается соединение с сервером с авторизацией по ключу.
  3. Туннелируется порт 445 удаленной машины на локальный порт 44445 сетевого loopback-адаптера доступного по адресу 10.255.255.1
  4. На loopback-адаптере 10.255.255.1 порт 44445 проксируется на локальный 445. Таким образом при подключении к \\10.255.255.1\ открывается удаленная шара с файлами (которая, при необходимости монтируется как сетевой диск).

Всё это автоматом лень торжествует. Безопасно, быстро и нативно выглядит. Любым редактором могу открывать и править файлы на удаленном сервере как у себя на локальном без проблем с загрузкой правленых файлов и установкой им необходимых разрешений. При этом нет проблем с безопасностью Samba.


Итак сперва по шагам:


На стороне WINDOWS


Должен быть установлены OpenSSH. В Windows 10 и Windows Server 2019 появился встроенный SSH клиент на основе OpenSSH. Им мы и воспользуемся. Сначала убедимся что он установлен наберем в командной строке


ssh


Если видим исполнение команды все "Ок", клиент присутствует в системе.


Шаг 1. Настройка сетевого адаптера


Устанавливаем loopback-адаптер в системе. Мы будем обращаться по адресу к локальному адаптеру.


hdwwiz.exe


Запустится Мастер установки оборудования (Здесь я пользуюсь русской Windows 10 Pro).


Далее -> Установка оборудования, выбранного из списка вручную -> Сетевые адаптеры -> Microsoft > Адаптер замыкания на себя Microsoft KM-Test -> Далее


Уверен, что эти шаги можно сделать из командной строки, но не нашел способ установки драйвера без devcon.exe, потому и не стал заморачиваться с автоматизацией этого шага.


Далее уже в CMD (от имени Администратора).


netsh interface show interface


Видим появился второй адаптер. У меня он называется Ethernet 2.


Теперь настроим адрес для этого адаптера




Или из командной строки:


netsh interface ip set address name="Ethernet 2" source=static address=10.255.255.1 mask=255.255.255.0

В результате у нас появился адаптер локально доступный по адресу 10.255.255.1


Теперь проблема в том, что нам необходимо получить доступ к общей папке через TCP-порт 445, но при загрузке Windows этот порт захватывается системным драйвером lanmanserver для всех интерфейсов. Отложив запуск драйвера lanmanserver и установив правило portproxy, мы можем обойти это.


Далее в командной строке от имени администратора меняем режим запуска сетевых служб (пробел после start= обязателен!!!):


sc config lanmanserver start= demandsc config iphlpsvc start= auto

и настраиваем для адаптера с адресом 10.255.255.1 проксирование порта 44445 на локальный порт 445


netsh interface portproxy add v4tov4 listenaddress=10.255.255.1 listenport=445 connectaddress=10.255.255.1 connectport=44445

Теперь необходимо перезагрузиться, чтобы схема перехвата порта у службы lanmanserver сработала.


Проверяем что прослушивание порта осуществляется нашим loopback-адаптером, просмотрев открытые в системе порты


netstat -an | find ":445 "

Если мы видим


TCP    10.255.255.1:445    0.0.0.0:0       LISTENING

значит все в порядке и порт прослушивается на нужном адресе. Если же мы видим "0.0.0.0:445" значит в нашей схеме что-то не сработало правильно. Проверить правила переадресации портов можно командой


netsh interface portproxy show v4tov4

Шаг 2. Ключ и рабочий скрипт


Создаем папку для вспомогательных файлов. Встроим, так сказать в систему наш способ.


mkdir %APPDATA%\CIFSoverSSHcd %APPDATA%\CIFSoverSSH

Генерируем ключ для ssh-авторизации (назовем его, например: cifsoversshkey)


ssh-keygen -t rsa -N "" -f cifsoversshkey 

В результате будет сгенерирована пара открытого и закрытого ключа. Для того, чтобы OpenSSH не выдавал сообщение UNPROTECTED PRIVATE KEY FILE! нужно изменить права на файл ключа. Задачу мы будем запускать для одного пользователя, от имени которого мы собираемся работать в Windows. Можно через GUI, но мне мне показалось что картинок уже достаточно. В Windows это сделаем следующей командой:


icacls cifsoversshkey /RESETicacls cifsoversshkey /grant Имя_Пользователя:F /inheritance:r

В результате текущий пользователь будет назначен владельцем, отключено наследование и удалены унаследованные права. Проверить мы это сможем командой


icacls cifsoversshkey 

Должны быть права только для текущего пользователя, иначе файл ключа не будет принят программой OpenSSH и соединение не будет подниматься!


Создадим в текущей папке пакетный файл cifsoverssh.cmd следующего содержания:


call cmd /c start "" /B C:\Windows\System32\OpenSSH\ssh.exe user@111.111.111.111 -p remoteport -i %APPDATA%\CIFSoverSSH\cifsoversshkey -L 10.255.255.1:44445:localhost:445 -N -o "StrictHostKeyChecking=no"

Где:
user@111.111.111.111 пользователь на стороне linux сервера @ адрес удаленного сервера


Шаг 3. Ярлык или задача в планировщике


Создаем ярлык для следующей команды: powershell -nologo -noninteractive -windowStyle hidden -command "%APPDATA%\CIFSoverSSH\cifsoversshkey.cmd"
Это позволит запускать наш пакетный файл через powershell без открытия окна. Если запускать его через CMD будет открываться черное окно терминала и будет висеть все время, пока соединение будет установлено, а это неудобно и некрасиво.


Для автоматизации запуска при входе в систему можно создать задачу в планировщике:


schtasks /CREATE /RU %username% /TN "CIFS over SSH" /TR "powershell.exe -nologo -noninteractive -windowStyle hidden -command %APPDATA%\CIFSoverSSH\cifsoversshkey.cmd" /SC ONLOGON /DELAY 0000:10 /IT /RL highest

На стороне клиентского компьютера Windows все приготовления были закончены.


Настройка Linux сервера


Предполагается, что ssh-сервер был предварительно настроен и включена авторизация по ключу.


Подключаемся по ssh из командной строки на windows-машине


C:\Windows\System32\OpenSSH\ssh.exe user@111.111.111.111 -p remoteport

В домашней папке пользователя, от имени которого мы будем авторизовываться при создании туннеля ищем файл ~/.ssh/authorized_keys (если файл отсутствует создадим его).


mkdir ~/.ssh && touch ~/.ssh/authorized_keys

Теперь необходимо в этот файл вставить содержимое нашего файла публичного ключа, созданного на нашей windows-машине (файл %APPDATA%\CIFSoverSSH\cifsoversshkey.pub). Откроем его в любом редакторе и вставим цепочку ключа с новой строки. Если есть другие ключи, просто вставим его с новой строки.


Устанавливаем Samba (на примере Debian)


apt update && apt install samba

Переименовываем старый файл настроек и создаем новый файл


mv /etc/samba/smb.conf /etc/samba/smb.conf.oldtouch /etc/samba/smb.conf

Открываем пустой файл настроек и приводим его к следующему виду:


[global]realm = webserverserver string = Web serverworkgroup = WORKGROUP# Setup charsetsdos charset = cp1251unix charset = utf8# Disable printersload printers = Noshow add printer wizard = noprintcap name = /dev/nulldisable spoolss = yes# Setup logginglog file = /var/log/smbd.logmax log size = 50max xmit = 65536debug level = 1# Setup daemon settingsdomain master = Nopreferred master = Yessocket options = IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=65536 SO_RCVBUF=65536 SO_KEEPALIVEos level = 65use sendfile = Yesdns proxy = Nodont descend = /proc,/dev,/etcdeadtime = 15# Enable synlinksunix extensions = Nowide links = yesfollow symlinks = yes# Securtity settingssecurity = usermap to guest = Bad Passwordguest account = nobodycreate mask = 0664directory mask = 0775hide dot files = yesclient min protocol = SMB2client max protocol = SMB3[ShareName]comment = Sites folderpath = /home/webforce user = www-dataforce group = www-dataread only = Noguest ok = Yeswritable = yescreate mask = 0664directory mask = 2775

В последней секции мы настраиваем непосредственно шару. В названии секции указываем имя шары ShareName. Path = путь к файлам, которые мы хотим расшарить. В параметрах force user и force group указываем linux-пользователя, от имени которого будут сохраняться файлы при изменении и создании в шаре. Так как у меня там лежат файлы для веб-сервера у меня пользователь www-data


Перезапускаем Samba


systemctl restart smbd

Отключаемся и выходим в командную строку Windows


exit

Всё готово. Теперь остается только запустить наш ярлык или выйти из профиля пользователя windows и снова войти (если вы создали задачу в планировщике).


После этого ваша удаленная шара будет доступна по адресу \10.255.255.1\ShareName Можно даже монтировать её как сетевой диск.

Подробнее..

Начало работы с Windows Terminal

22.12.2020 10:22:28 | Автор: admin
Привет, Хабр! Сегодня делимся гайдом по началу работы с Windows Terminal. Да, поскольку он о начале работы с инструментом, в основном в материале описываются какие-то базовые моменты. Но я думаю, что и профессионалы смогут подчерпнуть для себя что-то полезное, как минимум из списка полезных ссылок в конце статьи. Заглядывайте под кат!



Установка


Windows Terminal доступен в двух разных сборках: Windows Terminal и Windows Terminal Preview. Обе сборки доступны для загрузки в Microsoft Store и на странице выпусков GitHub.

Требования


Для запуска любой сборки Windows Terminal на вашем компьютере должна быть установлена Windows 10 1903 или более поздняя версия.

Windows Terminal Preview


Windows Terminal Preview это сборка, в которой в первую очередь появляются новые функции. Эта сборка предназначена для тех, кто хочет видеть новейшие функции сразу после их выпуска. Эта сборка имеет ежемесячный цикл выпуска с новейшими функциями каждый месяц.

Windows Terminal


Терминал Windows это основная сборка продукта. Функции, которые поступают в Windows Terminal Preview, появляются в Windows Terminal через месяц эксплуатации. Это позволяет проводить обширное тестирование ошибок и стабилизацию новых функций. Эта сборка предназначена для тех, кто хочет получить функции после того, как они были изучены и протестированы сообществом Preview.

Первый запуск


После установки терминала вы можете запустить приложение и сразу приступить к работе с командной строкой. По умолчанию терминал включает профили Windows PowerShell, Command Prompt и Azure Cloud Shell в раскрывающемся списке. Если на вашем компьютере установлены дистрибутивы Подсистемы Windows для Linux (WSL), они также должны динамически заполняться как профили при первом запуске терминала.

Профили


Профили действуют как различные среды командной строки, которые вы можете настраивать внутри терминала. По умолчанию в каждом профиле используется отдельный исполняемый файл командной строки, однако вы можете создать столько профилей, сколько захотите, используя один и тот же исполняемый файл. Каждый профиль может иметь свои собственные настройки, которые помогут вам различать их и добавить в каждый свой собственный стиль.



Дефолтный профиль


При первом запуске Windows Terminal в качестве профиля по умолчанию устанавливается Windows PowerShell. Профиль по умолчанию это профиль, который всегда открывается при запуске терминала, и это профиль, который открывается при нажатии кнопки новой вкладки. Вы можете изменить профиль по умолчанию, установив defaultProfile на имя вашего предпочтительного профиля в файле settings.json.

"defaultProfile": "PowerShell"

Добавление нового профиля


Новые профили можно добавлять динамически с помощью терминала или вручную. Терминал Windows автоматически создаст профили для распределений PowerShell и WSL. Эти профили будут иметь свойство source, которое сообщает терминалу, где он может найти соответствующий исполняемый файл.

Если вы хотите создать новый профиль вручную, вам просто нужно сгенерировать новый guid, указать name и предоставить исполняемый файл для свойства commandline.

Примечание. Вы не сможете скопировать свойство source из динамически созданного профиля. Терминал просто проигнорирует этот профиль. Вам нужно будет заменить source на commandline и предоставить исполняемый файл, чтобы дублировать динамически созданный профиль.

Структура Settings.json


В Терминал Windows включены два файла настроек. Один из них defaults.json, который можно открыть, удерживая клавишу Alt и нажав кнопку Настройки в раскрывающемся списке. Это неизменяемый файл, который включает в себя все настройки по умолчанию, которые поставляются с терминалом. Второй файл settings.json, в котором вы можете применить все свои пользовательские настройки. Доступ к нему можно получить, нажав кнопку Настройки в раскрывающемся меню.

Файл settings.json разделен на четыре основных раздела. Первый это объект глобальных настроек, который находится в верхней части файла JSON внутри первого {. Примененные здесь настройки повлияют на все приложение.

Следующим основным разделом файла является объект profiles. Объект profiles разделен на два раздела: defaults и list. Вы можете применить настройки профиля к объекту defaults, и они будут применяться ко всем профилям в вашем list. list содержит каждый объект профиля, который представляет профили, описанные выше, и это элементы, которые появляются в раскрывающемся меню вашего терминала. Настройки, примененные к отдельным профилям в списке, имеют приоритет над настройками, примененными в разделе defaults.

Далее в файле расположен массив schemes. Здесь можно разместить собственные цветовые схемы. Отличный инструмент, который поможет вам создать свои собственные цветовые схемы, это terminal.sexy.

Наконец, в нижней части файла находится массив actions. Перечисленные здесь объекты добавляют действия в ваш терминал, которые можно вызывать с клавиатуры и/или находить внутри палитры команд.

Базовая кастомизация


Вот несколько основных настроек, которые помогут вам начать настройку вашего терминала.

Фон


Одна из самых популярных настроек настраиваемое фоновое изображение. Это настройка профиля, поэтому ее можно либо поместить внутри объекта defaults внутри объекта profiles, чтобы применить ко всем профилям, либо внутри определенного объекта профиля.

"backgroundImage": "C:\Users\admin\background.png"

Параметр backgroundImage принимает расположение файла изображения, которое вы хотите использовать в качестве фона вашего профиля. Допустимые типы файлов: .jpg, .png, .bmp, .tiff, .ico и .gif.



Цветовая схема


Список доступных цветовых схем можно найти на нашем сайте документации. Цветовые схемы применяются на уровне профиля, поэтому вы можете поместить настройку внутри значений по умолчанию или в конкретный объект профиля.

"colorScheme": "COLOR SCHEME NAME"

Этот параметр принимает название цветовой схемы. Вы также можете создать свою собственную цветовую схему и поместить ее в список schemes, а затем установить в настройках профиля имя этой новой схемы, чтобы применить ее.

Начертание шрифта


По умолчанию Windows Terminal использует Cascadia Mono в качестве шрифта. Начертание шрифта это настройка уровня профиля. Вы можете изменить шрифт, установив fontFace на имя шрифта, который вы хотите использовать.

"fontFace": "FONT NAME"`

Совет: Терминал Windows также поставляется с начертанием шрифта Cascadia Code, который включает программные лигатуры (см. Gif ниже). Если вы используете Powerline, Cascadia Code также поставляется в PL-версии, которую можно загрузить с GitHub.



Полезные ресурсы


Докуметация Windows Terminal
Скотт Хансельман: как сделать красивым Windows Terminal с помощью Powerline, шрифтов Nerd, кода Cascadia, WSL и oh-my-posh
Скотт Хансельман: Как настроить терминал с помощью Git Branch, Windows Terminal, PowerShell, + Cascadia Code!
Скотт Хансельман: Windows Terminal Feature PREVIEW Кастомизируйте свои привязки клавиш, цветовые схемы, панели, и многое другое!
>_TerminalSplash темы Windows Terminal
Подробнее..

Закрепляем ярлыки на начальном экране в Windows 10 у текущего пользователя

06.04.2021 10:06:21 | Автор: admin

Эта статья своего рода proof of concept, как можно закрепить программно (открепить) ярлык на начальном экране для текущего пользователя без перезапуска или выхода из учетной записи. Как вы знаете, с выходом Windows 10 October 2018 Microsoft без шума закрыл доступ к API открепления (закрепления) ярлыков от начального экрана и панели задач: отныне это можно сделать лишь вручную.

Ниже приведен пример кода для закрепления (открепления) ярлыка на начальный экран, который когда-то работал. Как можете видеть, в коде используется метод получения локализорованной строки, и для этого нам необходимо знать код строки, чтобы вызвать соответствующий пункт контекстного меню. В данном пример, чтобы закрепить ярлык командной строки, мы вызываем строку с кодом 51201, Закрепить на начальном экране, из библиотеки %SystemRoot%\system32\shell32.dll.

Получить список всех локализованных строк удобнее всего через стороннюю утилиту ResourcesExtract.

# Extract a localized string from shell32.dll$Signature = @{Namespace = "WinAPI"Name = "GetStr"Language = "CSharp"MemberDefinition = @"[DllImport("kernel32.dll", CharSet = CharSet.Auto)]public static extern IntPtr GetModuleHandle(string lpModuleName);[DllImport("user32.dll", CharSet = CharSet.Auto)]internal static extern int LoadString(IntPtr hInstance, uint uID, StringBuilder lpBuffer, int nBufferMax);public static string GetString(uint strId){IntPtr intPtr = GetModuleHandle("shell32.dll");StringBuilder sb = new StringBuilder(255);LoadString(intPtr, strId, sb, sb.Capacity);return sb.ToString();}"@}if (-not ("WinAPI.GetStr" -as [type])){Add-Type @Signature -Using System.Text}# Pin to Start: 51201# Unpin from Start: 51394$LocalizedString = [WinAPI.GetStr]::GetString(51201)# Trying to pin the Command Prompt shortcut to Start$Target = Get-Item -Path "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools\Command Prompt.lnk"$Shell = New-Object -ComObject Shell.Application$Folder = $Shell.NameSpace($Target.DirectoryName)$file = $Folder.ParseName($Target.Name)$Verb = $File.Verbs() | Where-Object -FilterScript {$_.Name -eq $LocalizedString}$Verb.DoIt()

Сейчас консоль вываливается с ошибкой Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

Хотя, как можно заметить, API, конечно, отдает глагол контекстного меню Закрепить на начальном &экране, но не может его выполнить.

Где-то читал, что, возможно, Microsoft заблокировал доступ в целях недопущения закрепления ярлыков bloatware. Звучит странно, но ладно

Я уже много лет поддерживаю крупнейший PowerShell-модуль для тонкой настройки Windows 10 и автоматизации рутинных задач. Подробнее можно почитать здесь. И встала задача из спортивного интереса обойти это ограничение и попробовать закрепить нужные мне ярлыки. Речь, конечно, идет по большей части о домашних пользователях, ведь в энтерпрайзе используется GPO для импорта предзаготовленного макета начального экрана и панели задач.

Мы знаем, что текущий макет начального экрана можно выгрузить в формате XML. Но даже, если его настроить должным образом, импортировать макет в профиль текущего пользователя не получится: Import-StartLayout -LayoutPath "D:\Layout.xml импортирует макеты начального экрана и панели задач только для новых пользователей.

Идея заключается в том, чтобы использовать политику Макет начального экрана (Prevent users from customizing their Start Screen), отвечающую за подгрузку предзаготовленного макета в формате XML из определенного места. Соответственно, наш хак будет состоять из следующих пунктов:

  • Выгружаем текущий макет начального экрана;

  • Парсим XML, добавляя необходимые нам ярлыки (ссылки должны вести на реально существующие ярлыки) и сохраняем;

  • С помощью политики временно выключаем возможность редактировать макет начального экрана;

  • Перезапускаем меню Пуск;

  • Программно открываем меню Пуск, чтобы в реестре сохранился его макет;

  • Выключаем политику, чтобы можно было редактировать макет начального экрана;

  • И открываем меню Пуск опять.

Вуаля! В данном примере мы настроили начальный экран на лету, закрепив на него три ярлыка: Панель управления, устройства и принтеры и PowerShell.

<#.SYNOPSISConfigure the Start tiles.PARAMETER ControlPanelPin the "Control Panel" shortcut to Start.PARAMETER DevicesPrintersPin the "Devices & Printers" shortcut to Start.PARAMETER PowerShellPin the "Windows PowerShell" shortcut to Start.PARAMETER UnpinAllUnpin all the Start tiles.EXAMPLE.\Pin.ps1 -Tiles ControlPanel, DevicesPrinters, PowerShell.EXAMPLE.\Pin.ps1 -UnpinAll.EXAMPLE.\Pin.ps1 -UnpinAll -Tiles ControlPanel, DevicesPrinters, PowerShell.EXAMPLE.\Pin.ps1 -UnpinAll -Tiles ControlPanel.EXAMPLE.\Pin.ps1 -Tiles ControlPanel -UnpinAll.LINKhttps://github.com/farag2/Windows-10-Sophia-Script.NOTESSeparate arguments with commaCurrent user#>[CmdletBinding()]param([Parameter(Mandatory = $false,Position = 0)][switch]$UnpinAll,[Parameter(Mandatory = $false,Position = 1)][ValidateSet("ControlPanel", "DevicesPrinters", "PowerShell")][string[]]$Tiles,[string]$StartLayout = "$PSScriptRoot\StartLayout.xml")begin{# Unpin all the Start tilesif ($UnpinAll){Export-StartLayout -Path $StartLayout -UseDesktopApplicationID[xml]$XML = Get-Content -Path $StartLayout -Encoding UTF8 -Force$Groups = $XML.LayoutModificationTemplate.DefaultLayoutOverride.StartLayoutCollection.StartLayout.Groupforeach ($Group in $Groups){# Removing all groups inside XML$Group.ParentNode.RemoveChild($Group) | Out-Null}$XML.Save($StartLayout)}}process{# Extract strings from shell32.dll using its' number$Signature = @{Namespace = "WinAPI"Name = "GetStr"Language = "CSharp"MemberDefinition = @"[DllImport("kernel32.dll", CharSet = CharSet.Auto)]public static extern IntPtr GetModuleHandle(string lpModuleName);[DllImport("user32.dll", CharSet = CharSet.Auto)]internal static extern int LoadString(IntPtr hInstance, uint uID, StringBuilder lpBuffer, int nBufferMax);public static string GetString(uint strId){IntPtr intPtr = GetModuleHandle("shell32.dll");StringBuilder sb = new StringBuilder(255);LoadString(intPtr, strId, sb, sb.Capacity);return sb.ToString();}"@}if (-not ("WinAPI.GetStr" -as [type])){Add-Type @Signature -Using System.Text}# Extract the localized "Devices and Printers" string from shell32.dll$DevicesPrinters = [WinAPI.GetStr]::GetString(30493)# We need to get the AppID because it's auto generated$Script:DevicesPrintersAppID = (Get-StartApps | Where-Object -FilterScript {$_.Name -eq $DevicesPrinters}).AppID$Parameters = @(# Control Panel hash table@{# Special name for Control PanelName = "ControlPanel"Size = "2x2"Column = 0Row = 0AppID = "Microsoft.Windows.ControlPanel"},# "Devices & Printers" hash table@{# Special name for "Devices & Printers"Name = "DevicesPrinters"Size   = "2x2"Column = 2Row    = 0AppID  = $Script:DevicesPrintersAppID},# Windows PowerShell hash table@{# Special name for Windows PowerShellName = "PowerShell"Size = "2x2"Column = 4Row = 0AppID = "{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\WindowsPowerShell\v1.0\powershell.exe"})# Valid columns to place tiles in$ValidColumns = @(0, 2, 4)[string]$StartLayoutNS = "http://schemas.microsoft.com/Start/2014/StartLayout"# Add pre-configured hastable to XMLfunction Add-Tile{param([string]$Size,[int]$Column,[int]$Row,[string]$AppID)[string]$elementName = "start:DesktopApplicationTile"[Xml.XmlElement]$Table = $xml.CreateElement($elementName, $StartLayoutNS)$Table.SetAttribute("Size", $Size)$Table.SetAttribute("Column", $Column)$Table.SetAttribute("Row", $Row)$Table.SetAttribute("DesktopApplicationID", $AppID)$Table}if (-not (Test-Path -Path $StartLayout)){# Export the current Start layoutExport-StartLayout -Path $StartLayout -UseDesktopApplicationID}[xml]$XML = Get-Content -Path $StartLayout -Encoding UTF8 -Forceforeach ($Tile in $Tiles){switch ($Tile){ControlPanel{$ControlPanel = [WinAPI.GetStr]::GetString(12712)Write-Verbose -Message ("The `"{0}`" shortcut is being pinned to Start" -f $ControlPanel) -Verbose}DevicesPrinters{$DevicesPrinters = [WinAPI.GetStr]::GetString(30493)Write-Verbose -Message ("The `"{0}`" shortcut is being pinned to Start" -f $DevicesPrinters) -Verbose# Create the old-style "Devices and Printers" shortcut in the Start menu$Shell = New-Object -ComObject Wscript.Shell$Shortcut = $Shell.CreateShortcut("$env:APPDATA\Microsoft\Windows\Start menu\Programs\System Tools\$DevicesPrinters.lnk")$Shortcut.TargetPath = "control"$Shortcut.Arguments = "printers"$Shortcut.IconLocation = "$env:SystemRoot\system32\DeviceCenter.dll"$Shortcut.Save()Start-Sleep -Seconds 3}PowerShell{Write-Verbose -Message ("The `"{0}`" shortcut is being pinned to Start" -f "Windows PowerShell") -Verbose}}$Parameter = $Parameters | Where-Object -FilterScript {$_.Name -eq $Tile}$Group = $XML.LayoutModificationTemplate.DefaultLayoutOverride.StartLayoutCollection.StartLayout.Group | Where-Object -FilterScript {$_.Name -eq "Sophia Script"}# If the "Sophia Script" group exists in Startif ($Group){$DesktopApplicationID = ($Parameters | Where-Object -FilterScript {$_.Name -eq $Tile}).AppIDif (-not ($Group.DesktopApplicationTile | Where-Object -FilterScript {$_.DesktopApplicationID -eq $DesktopApplicationID})){# Calculate current filled columns$CurrentColumns = @($Group.DesktopApplicationTile.Column)# Calculate current free columns and take the first one$Column = (Compare-Object -ReferenceObject $ValidColumns -DifferenceObject $CurrentColumns).InputObject | Select-Object -First 1# If filled cells contain desired ones assign the first free columnif ($CurrentColumns -contains $Parameter.Column){$Parameter.Column = $Column}$Group.AppendChild((Add-Tile @Parameter)) | Out-Null}}else{# Create the "Sophia Script" group[Xml.XmlElement]$Group = $XML.CreateElement("start:Group", $StartLayoutNS)$Group.SetAttribute("Name","Sophia Script")$Group.AppendChild((Add-Tile @Parameter)) | Out-Null$XML.LayoutModificationTemplate.DefaultLayoutOverride.StartLayoutCollection.StartLayout.AppendChild($Group) | Out-Null}}$XML.Save($StartLayout)}end{# Temporarily disable changing the Start menu layoutif (-not (Test-Path -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer)){New-Item -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Force}New-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name LockedStartLayout -Value 1 -ForceNew-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name StartLayoutFile -Value $StartLayout -ForceStart-Sleep -Seconds 3# Restart the Start menuStop-Process -Name StartMenuExperienceHost -Force -ErrorAction IgnoreStart-Sleep -Seconds 3# Open the Start menu to load the new layout$wshell = New-Object -ComObject WScript.Shell$wshell.SendKeys("^{ESC}")Start-Sleep -Seconds 3# Enable changing the Start menu layoutRemove-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name LockedStartLayout -Force -ErrorAction IgnoreRemove-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name StartLayoutFile -Force -ErrorAction IgnoreRemove-Item -Path $StartLayout -ForceStop-Process -Name StartMenuExperienceHost -Force -ErrorAction IgnoreStart-Sleep -Seconds 3# Open the Start menu to load the new layout$wshell = New-Object -ComObject WScript.Shell$wshell.SendKeys("^{ESC}")}

Страница GitHub Windows 10 Sophia Script, где в том числе используется данный метод.

Огромное спасибо iNNOKENTIY21 за помощь в реализации метода.

Подробнее..

Перевод Показания загруженности процессора в диспетчере задач ни о чем на самом деле не говорят

17.04.2021 22:08:49 | Автор: admin

Когда диспетчер задач сообщает вам, что процессор загружен на все 100 %, вы можете подумать, что система работает изо всех сил и не имеет дополнительных вычислительных мощностей. А когда диспетчер задач сообщает о том, что ЦП загружен на 40 %, вы интуитивно полагаете, что он потребляет 40 % от всей общей доступной мощности. То было достаточно точное толкование как в Windows 7, так и Windows Server 2008 R2. Но с выходом нового дизайна, впервые представленного в Windows 8, вкладки Процессы и Производительность диспетчера задач теперь полагаются на разные метрики и показывают цифры, которые вводят в заблуждение и которые без дополнительного контекста совершенно бессмысленны.

Изменения диспетчера задач были предназначены для учета достижений в технологии микросхем. Относительно просто определить загрузку процессора: сколько времени в течение заданного интервала он тратит в режиме занятости против простаивания (*). Раньше, когда процессоры всегда работали с заданной частотой, простая арифметика говорила вам, сколько работы выполнял процессор. Современные процессоры предлагают улучшения в области энергоэффективности. Например, работают на пониженных частотах или полностью выключаются в периоды низкой потребляемой мощности, а ядро процессора работает быстрее, чем указанная частота в периоды повышения потребления мощности. Следовательно, загрузка ЦП сама по себе больше не дает нам столько информации, сколько она давала раньше, о том, сколько выполняется обработка.

(*) В более ранних версиях Windows это были грубые приближения. Точность доступных показателей улучшилась от Windows XP к Vista, а потом и к Win7, как и в соответствующих им серверных версиях ОС.

Чтобы попытаться учесть эти сложности, Windows ввела понятие служебной программы процессора вместе со счетчиками производительности, которые измеряют эту служебную программу. Windows определяет полезность процессора как объем выполненной работы в процентах от объема работы, которую он мог бы выполнить, если бы он постоянно работал на своем номинальном уровне производительности и никогда не включал режим повышенной производительности. Когда процессор включает режим повышенной производительности обычное вообще явление его процент полезности может легко превысить 100 %. Возможная верхняя граница неопределенна и зависит от множества факторов, которые Windows не может измерить напрямую. Вкладки Процессы и Производительность диспетчера задач теперь используют счетчик процент полезности процессора в качестве основы для показания их загруженности, а не счетчик процент загруженности процессора, на который полагался Диспетчер задач, который по-прежнему используется вкладкой Подробности диспетчера задач и Process Explorer, входящий в комплект Sysinternals.

В результате, поскольку динамически настраиваемые процессоры автоматически переходят в расширенный режим под нагрузкой, процент загруженности ЦП диспетчера задач на процесс, который активно выполняет код, обычно будет значительно больше, чем время его процессора. Но поскольку это число находится на шкале, которая ограничена 100 %, диспетчер задач создает впечатление, что процесс занимает больше вычислительных мощностей системы, чем есть на самом деле. Некоторое время сам диспетчер задач сообщал об общей загрузке ЦП более 100 %. Поскольку это противоречит здравому смыслу даже для людей, которые понимают концепцию полезности, диспетчер задач теперь ограничивает сообщаемые значения на отметке в 100 %. Это приводит в дальнейшем еще к большему искажению. Я покажу.

На приведенных ниже скриншотах Process Explorer и вкладка Производительность диспетчера задач подтверждают, что ровно половина из двенадцати потоков полностью загружены, а остальные процессоры почти полностью простаивают. Однако обратите внимание, что Process Explorer сообщает об общем проценте загруженности ЦП чуть более 50, а диспетчер задач сообщает о 83. Возможно, это должно быть 83 % по шкале 166 %. Но что это вообще значит? Процент буквально означает на сотню. Вкладка Производительность диспетчера задач также показывает, что базовая частота процессоров составляет 2,40 ГГц, но во время этого измерения скорость составляет 3,94 ГГц. Получается, что 83 % умножить на 2,40/3,94 это 50,56%, что близко к фактическому использованию. 83 процента в данном случае фактически находятся во временной шкале 164,17 (100 %*3,94/2,40). Это объясняет, как получаются числа, но не делает их интуитивно понятными или значимыми.

Диалоговое окно "Информация о системе" в Process ExplorerДиалоговое окно "Информация о системе" в Process ExplorerВкладка "Производительность" диспетчера задачВкладка "Производительность" диспетчера задач

На вкладке Процессы диспетчера задач указано, что моя тестовая программа потребляет 82,8 %, то есть почти все из 83 % общего использования, о которых она сообщает. В то же время на вкладке Подробности диспетчера задач указано, что моя программа потребляет 50 % ресурсов ЦП. Цифры на вкладке "Подробности", основанные на "проценте загруженности процессора", а не на "процент полезности процессора" и более понятны, чем числа на вкладке "Процессы".

Вкладка "Процессы" диспетчера задачВкладка "Процессы" диспетчера задачИ его вкладка "Подробности"И его вкладка "Подробности"

Давайте возьмем его на ступеньку выше и запустим восемь потоков, привязанных к потокам ЦП, задействуя две трети процессора, оставив остальные простаивать. Вкладка Производительность диспетчера задач сообщает о 100 % загрузке ЦП, подразумевая, что система работает на максимальной мощности, в то время, как и она, и Process Explorer ясно показывают, что четыре из двенадцати процессоров простаивают и готовы к работе. На вкладке Процессы диспетчера задач указано, что тестовая программа использует 100 % ЦП, а на вкладке Подробности указано, что она потребляет только 67 % две трети доступной вычислительной мощности.

Process ExplorerProcess ExplorerВкладка "Производительность" диспетчера задачВкладка "Производительность" диспетчера задачВкладка "Процессы" диспетчера задачВкладка "Процессы" диспетчера задачВкладка "Сведения" диспетчера задачВкладка "Сведения" диспетчера задач

Суть в том, что показатели ЦП в диспетчере задач могут вводить в заблуждение, противоречащие здравому смыслу и в конечном итоге бессмысленны. Процент полезности процессора это в лучшем мистическая система мер, Диспетчер задач и не может выступать в качестве диагностической утилиты для конечного пользователя.

Здесь можно взглянуть на точку зрения моего коллеги Джеффа Стоукса по поводу данного вопроса.

Подробнее..

Настройки Windows 10 часть III, или куда приводят скрипты

23.04.2021 14:18:12 | Автор: admin

Здравствуйте, товарищи! Прошло чуть больше полугода после выхода предыдущей статьи о Windows 10 Sophia Script скрипте, который за прошедшие годы стал самым крупным (а их осталось всего два) опенсорс-проектом по персонализации и настройке Windows 10, а также автоматизации рутинных задач. В статье я расскажу, что изменилось с момента релиза версии, описываемой в статье от 29.09.2020, с какими трудностями мы столкнулись, и куда всё движется.


Как всё начиналось

Разработка наброска скрипта берёт своё начало в те далёкие времена, когда после года работы экономистом в отделе проектирования птицефабрики в одной организации я решил перейти в местный отдел IT.

Отдел ITОтдел IT

Перейдя на новое место, я предложил автоматизировать настройку пользовательских ОС. Так, через пару недель, появился первый прародитель данного модуля примитивный .reg-файл для настройки Windows 8.1. Но я и ему был рад, так как всё было в новинку.

Так продолжалось, наверное, год, пока я не понял, что упёрся в тупик и надо менять язык: начал готовить "батник".

В первый день выхода Windows 10 я сразу же "пересел" на неё, поняв, что Windows 8.1 осталась для Microsoft в прошлом. Со временем же "батник" рос, "мужал", разрастался и в какой-то момент даже стал дёргать другой интерпретатор, powershell.exe. Скорость работы падала, и я понимал, что придётся учить PowerShell, так как batch уже не удовлетворяет моим маниакальным запросам автоматизировать всё при настройке ОС.

Как сейчас помню, в феврале 2017 года я сел читать первую статью по запросу "как внести данные в реестр с помощью PowerShell". Уже к лету 2017 года я значительно продвинулся в переписывании всех имеющих функций из "батника" в новый скрипт.

Изначально, конечно, скрипт состоял лишь из одного файла с расширением .ps1. Пользователям приходилось править код и комментировать целые функции, чтобы настроить под себя. То ещё удовольствие было

Помню, как первый раз почувствовал, что я делаю что-то полезное, когда некто создал issue с просьбой указывать, что я исправляю, когда перезаписываю файлы на GitHub. Пришлось вести журнал изменений.

В таком неспешном темпе разработка шла до августа 2019 года, когда я решил поделиться своими наработками здесь. Хотя я читаю Хабр с года эдак 2007-го, зарегистрировался лишь в 2016-м.

Немного облагородил код (ага, 10 раз), добавил описания на английском языке и накатал крохотную статью о своей pet-разработке. Удивительно, но статью пропустили, она попала в бездну, и я сел ждать.

Мой лик, когда ожидаю приглашенияМой лик, когда ожидаю приглашения

Как сейчас помню: сижу на сеансе в кинотеатре, и приходит уведомление на почту о новом комментарии к моей статье. Так, стоп! Её одобрили?!

Я не успевал отвечать на комментарии! Это была какая-то эйфория. Какой там фильм?! меня на Хабр пригласили прямым инвайтом! Фурор! Даже код не обо...ли (а там был кровавый мрак) и вообще любезно приняли.

Мой лик, когда получил приглашениеМой лик, когда получил приглашение

Самым неожиданным поворотом стало то, что через 5 дней после публикации мне написал некий Дмитрий (@oz-zo), прочитавший моё сетование на то, что у меня не хватает знаний, чтобы сделать графическую версию скрипта, даже хотя бы на Windows.Forms. Я был приятно удивлён, что есть ещё один старый безумец. Как выяснилось, старый, но не бесполезный!

Познакомившись, мы запланировали всё сделать примерно за 3 месяца на Windows.Forms, но наше приключение затянулось больше чем на 1,5 года: лишь в этом месяце мы вышли на финишную прямую по созданию графической версии моего скрипта SophiApp. Но это уже другая история, и, когда будет что показать, я обязательно расскажу, что мы пережили за время разработки, поделившись нашими инфернальными набросками и наработками.

С того времени как я познакомился с Дмитрием, разработка пошла быстрее: он внёс огромный вклад в создание новых функций, которых не было ни у кого: все графические функции с использованием WPF и логику к ним написал именно он; я лишь объяснил, как получать данные.

Иконка Sophia ScriptИконка Sophia Script

Немаловажным событием стало также знакомство с Дэвидом из Канады, который решил сделать самостоятельно графическую надстройку для Sophia Script, Sophia Script Wrapper, для повышения удобства редактирования пресет-файла. В текущем варианте пользователь импортирует пресет-файл скрипта, и в программе расставляются радиокнопки в зависимости от закомментированных и раскомментированных функций. Дальше можно настроить под себя и запустить выполнение настроенного пресет-файла.

Хотя Дэвиду уже нормально так, программировать он сел лишь недавно, окончив курсы. Но его программа выполняет ту задачу, для которой её и написали. Одним словом, люди пользуются.

Sophia Script WrapperSophia Script Wrapper

Что поменялось в скрипте

За время, прошедшее с момента выхода прошлой статьи в сентябре, много воды утекло. Скрипт уже и не узнать. Больше 12 000 строк кода Самые интересные изыскания пришлись на удаление UWP-приложений и закрепление ярлыков на начальный экран.

Напомню, какие версии Windows 10 поддерживает скрипт на данный момент.

Версия

Маркетинговое название

Билд

Архитектура

Издания

21H1

Spring 2021 Update

19043

x64

Home/Pro/Enterprise

20H2

October 2020 Update

19042

x64

Home/Pro/Enterprise

2004

May 2020 Update

19041

x64

Home/Pro/Enterprise

1809

LTSC Enterprise 2019

17763

x64

Enterprise

А теперь пройдёмся по всем доработанным и новым функциям.

Функции касающиеся манипуляций с UWP-приложениями

Было/СталоБыло/Стало

Наверное, вы уже заметили, что список стал локализованным. Также хочется добавить, что список генерируется динамически, загружая лишь установленные пакеты UWP-приложений в соответствии с текущей локализацией. Как это реализовано?

Свойство DysplayName, которое содержит локализованное имя пакета, находится лишь в одном классе (Get-AppxPackage вам никак тут не может, к сожалению):

"Windows.Management.Deployment.PackageManager"

[Windows.Management.Deployment.PackageManager, Windows.Web, ContentType = WindowsRuntime]::new().FindPackages() | Select-Object -Property DisplayName -ExpandProperty Id | Select-Object -Property Name, DisplayName
На выходе вы получите что-то вроде этого (простыню кода прячу под спойлер)
Name                                        DisplayName                                          ----                                        -----------                                          1527c705-839a-4832-9118-54d4Bd6a0c89                                                             c5e2524a-ea46-4f67-841f-6a9465d9d515        Проводник                                            E2A4F912-2574-4A75-9BB0-0D023378592B        Сопоставитель приложений                             F46D4000-FD22-4DB4-AC8E-4E1DDDE828FE        Диалоговое окно "Добавить рекомендованные папки"     Microsoft.AAD.BrokerPlugin                  Учетная запись компании или учебного заведения       Microsoft.AccountsControl                   Электронная почта и учетные записи                   Microsoft.AsyncTextService                  AsyncTextService                                     Microsoft.BioEnrollment                     Настройка Windows Hello                              Microsoft.CredDialogHost                    Диалоговое окно учетных данных                       Microsoft.ECApp                             Управление глазами                                   Microsoft.LockApp                           Экран блокировки Windows по умолчанию                Microsoft.MicrosoftEdgeDevToolsClient       Клиент средств разработчика для Microsoft Edge       Microsoft.MicrosoftEdge                                                                          Microsoft.Win32WebViewHost                  Веб-средство просмотра классических приложений       Microsoft.Windows.Apprep.ChxApp             SmartScreen Защитника Windows                        Microsoft.Windows.AssignedAccessLockApp     Приложение "Блокировка" при ограниченном доступе     Microsoft.Windows.CallingShellApp           Видеозвонки                                          Microsoft.Windows.CapturePicker             CapturePicker                                        Microsoft.Windows.CloudExperienceHost       Ваша учетная запись                                  Microsoft.Windows.ContentDeliveryManager    Содержимое, предоставленное корпорацией Майкрософт   Microsoft.Windows.NarratorQuickStart        Экранный диктор                                      Microsoft.Windows.OOBENetworkCaptivePortal  Поток портала авторизации                            Microsoft.Windows.OOBENetworkConnectionFlow Последовательность действий при сетевом подключении  Microsoft.Windows.ParentalControls          Функции семьи учетных записей Майкрософт             Microsoft.Windows.PeopleExperienceHost      Windows Shell Experience                             Microsoft.Windows.PinningConfirmationDialog PinningConfirmationDialog                            Microsoft.Windows.Search                    Windows Search                                       Microsoft.Windows.SecHealthUI               Безопасность Windows                                 Microsoft.Windows.SecureAssessmentBrowser   Тестирование                                         Microsoft.Windows.ShellExperienceHost       Windows Shell Experience                             Microsoft.Windows.StartMenuExperienceHost   Запустить                                            Microsoft.Windows.XGpuEjectDialog           Безопасное извлечение устройства                     Microsoft.XboxGameCallableUI                Xbox Game UI                                         MicrosoftWindows.Client.CBS                 Windows Feature Experience Pack                      MicrosoftWindows.UndockedDevKit             UDK Package                                          NcsiUwpApp                                  NcsiUwpApp                                           Windows.CBSPreview                          Предварительный просмотр штрихкодов Windows          windows.immersivecontrolpanel               Параметры                                            Windows.PrintDialog                         PrintDialog                                          Microsoft.Services.Store.Engagement         Microsoft Engagement Framework                       Microsoft.Services.Store.Engagement         Microsoft Engagement Framework                       Microsoft.UI.Xaml.2.0                       Microsoft.UI.Xaml.2.0                                Microsoft.VCLibs.140.00                     Microsoft Visual C++ 2015 UWP Runtime Package        Microsoft.Advertising.Xaml                  Microsoft Advertising SDK for XAML                   Microsoft.NET.Native.Framework.2.2          Microsoft .Net Native Framework Package 2.2          Microsoft.NET.Native.Framework.2.2          Microsoft .Net Native Framework Package 2.2          Microsoft.VCLibs.140.00                     Microsoft Visual C++ 2015 UWP Runtime Package        Microsoft.VCLibs.140.00                     Microsoft Visual C++ 2015 UWP Runtime Package        Microsoft.NET.Native.Runtime.2.2            Microsoft .Net Native Runtime Package 2.2            Microsoft.NET.Native.Runtime.2.2            Microsoft .Net Native Runtime Package 2.2            Microsoft.VCLibs.140.00.UWPDesktop          Microsoft Visual C++ 2015 UWP Desktop Runtime PackageMicrosoft.VCLibs.140.00.UWPDesktop          Microsoft Visual C++ 2015 UWP Desktop Runtime PackageMicrosoft.UI.Xaml.2.1                       Microsoft.UI.Xaml.2.1                                Microsoft.UI.Xaml.2.1                       Microsoft.UI.Xaml.2.1                                Microsoft.UI.Xaml.2.0                       Microsoft.UI.Xaml.2.0                                Microsoft.UI.Xaml.2.3                       Microsoft.UI.Xaml.2.3                                Microsoft.UI.Xaml.2.3                       Microsoft.UI.Xaml.2.3                                Microsoft.UI.Xaml.2.4                       Microsoft.UI.Xaml.2.4                                Microsoft.UI.Xaml.2.4                       Microsoft.UI.Xaml.2.4                                Microsoft.ScreenSketch                      Набросок на фрагменте экрана                         Microsoft.NET.Native.Framework.1.7          Microsoft .Net Native Framework Package 1.7          Microsoft.NET.Native.Framework.1.7          Microsoft .Net Native Framework Package 1.7          Microsoft.NET.Native.Runtime.1.7            Microsoft .Net Native Runtime Package 1.7            Microsoft.NET.Native.Runtime.1.7            Microsoft .Net Native Runtime Package 1.7            Microsoft.VCLibs.120.00                     Microsoft Visual C++ Runtime Package                 Microsoft.VCLibs.120.00                     Microsoft Visual C++ Runtime Package                 Microsoft.VCLibs.140.00.UWPDesktop          Microsoft Visual C++ 2015 UWP Desktop Runtime PackageMicrosoft.VCLibs.140.00.UWPDesktop          Microsoft Visual C++ 2015 UWP Desktop Runtime PackageMicrosoft.VCLibs.140.00                     Microsoft Visual C++ 2015 UWP Runtime Package        Microsoft.VCLibs.140.00                     Microsoft Visual C++ 2015 UWP Runtime Package        Microsoft.WebpImageExtension                Расширения для изображений Webp                      Microsoft.DesktopAppInstaller               Установщик приложения                                Microsoft.NET.Native.Framework.2.2          Microsoft .Net Native Framework Package 2.2          Microsoft.NET.Native.Framework.2.2          Microsoft .Net Native Framework Package 2.2          AppUp.IntelGraphicsExperience               Центр управления графикой Intel                     Microsoft.Windows.StartMenuExperienceHost   Запустить                                            Microsoft.Windows.ShellExperienceHost       Windows Shell Experience                             Microsoft.Windows.AssignedAccessLockApp     Приложение "Блокировка" при ограниченном доступе     Microsoft.WindowsTerminal                   Windows Terminal                                     Microsoft.AV1VideoExtension                 AV1 Video Extension                                  Microsoft.HEIFImageExtension                Расширения для изображений HEIF                      Microsoft.Windows.Photos                    Фотографии (Майкрософт)                              Microsoft.UI.Xaml.2.5                       Microsoft.UI.Xaml.2.5                                Microsoft.UI.Xaml.2.5                       Microsoft.UI.Xaml.2.5                                Microsoft.WindowsStore                      Microsoft Store                                      Microsoft.StorePurchaseApp                  Узел для покупок в Store                             Microsoft.LanguageExperiencePackru-RU       Пакет локализованного интерфейса на русском          Microsoft.MicrosoftEdge                     Microsoft Edge                                       Microsoft.VP9VideoExtensions                Расширения для VP9-видео                             MicrosoftWindows.Client.WebExperience       Windows Web Experience Pack                          Microsoft.WebMediaExtensions                Расширения для интернет-мультимедиа                  Microsoft.HEVCVideoExtension                Расширения для видео HEVC от производителя устройстваMicrosoftWindows.Client.CBS                 Windows Feature Experience Pack                      Microsoft.MicrosoftEdge.Stable              Microsoft Edge     
Первые попытки переписать функцию удаления UWP-пакетовПервые попытки переписать функцию удаления UWP-пакетов

Хоть на картинке и не видно, но кнопка "Для всех пользователей" была тоже полностью переписана. Раньше она совершенно неправильно работала. Сейчас же её логика приведена к должному функционалу. По умолчанию при загрузке формы отображается список приложений для текущего пользователя (все системные пакеты и Microsoft Store исключены из списка, так что удалить хоть что-то важное не получится никак, в отличие, кстати, от всех других скриптов в Интернете). При нажатии на кнопку "Для всех пользователей" происходит динамическая перегенерация списка с учётом установленных пакетов во всех учётных записях. То есть вы можете удалить все приложения для текущего пользователя, и форма отобразится пустой, но при запуске функции с ключом "-ForAllUsers" отобразится список пакетов для всех учётных записей.

Как-то меня попросили добавить поддержку PowerShell 7. И всё это было бы смешно, когда бы не было так грустно

Во-первых, ни для кого не будет секретом, что, хотя в PowerShell 7 исправили очень много багов, в нынешнем виде очень далёк от финальной версии, ведь там до сих пор даже не работает командлет Get-ComputerRestorePoint из коробки. И (в качестве временного решения) Microsoft предложил загружать в сессию недостающие модули из папки PowerShell 5.1, используя аргумент -UseWindowsPowerShell.

Таким образом, мне приходится загружать модули Microsoft.PowerShell.Management, PackageManagement, Appx, чтобы воссоздать работоспособность скрипта на PowerShell 7:

Import-Module -Name Microsoft.PowerShell.Management, PackageManagement, Appx -UseWindowsPowerShell

Во-вторых, код для получения локализованных имен UWP-пакетов не работает в PowerShell 7 вообще, так как Microsoft решил не включать библиотеки WinRT в релизы PowerShell 7, но вынес разработку на отдельные ресурсы: WinRT и Windows.SDK. Это упомянул и Steven Lee в обсуждении на GitHub, а также уведомил, что команда PowerShell решила не включать в дальнейшем в релизы эти библиотеки. Поэтому, чтобы вызвать необходимые API, мне приходится хранить в папке две библиотеки по 26 МБ и 284 КБ. Тут остаётся лишь поставить мем с пингвином.

Код для получения локализованных имен UWP-пакетов на PowerShell 7 выглядит так:

Add-Type -AssemblyName "$PSScriptRoot\Libraries\WinRT.Runtime.dll"Add-Type -AssemblyName "$PSScriptRoot\Libraries\Microsoft.Windows.SDK.NET.dll"$AppxPackages = Get-AppxPackage -PackageTypeFilter Bundle -AllUsers$PackagesIds = [Windows.Management.Deployment.PackageManager]::new().FindPackages().AdditionalTypeData[[Collections.IEnumerable].TypeHandle] | Select-Object -Property DisplayName -ExpandProperty Id | Select-Object -Property Name, DisplayNameforeach ($AppxPackage in $AppxPackages){$PackageId = $PackagesIds | Where-Object -FilterScript {$_.Name -eq $AppxPackage.Name}if (-not $PackageId){continue}[PSCustomObject]@{Name = $AppxPackage.NamePackageFullName = $AppxPackage.PackageFullNameDisplayName = $PackageId.DisplayName}}

На выходе будет что-то вроде:

Name                                         PackageFullName                                                                DisplayName----                                         ---------------                                                                -----------RealtekSemiconductorCorp.RealtekAudioControl RealtekSemiconductorCorp.RealtekAudioControl_1.1.137.0_neutral_~_dt26b99r8h8gj Realtek Audio ControlMicrosoft.MicrosoftStickyNotes               Microsoft.MicrosoftStickyNotes_3.7.142.0_neutral_~_8wekyb3d8bbwe               Microsoft Sticky NotesMicrosoft.ScreenSketch                       Microsoft.ScreenSketch_2020.814.2355.0_neutral_~_8wekyb3d8bbwe                 Набросок на фрагменте экранаMicrosoft.WindowsCalculator                  Microsoft.WindowsCalculator_2020.2008.2.0_neutral_~_8wekyb3d8bbwe              Windows CalculatorAppUp.IntelGraphicsExperience                AppUp.IntelGraphicsExperience_1.100.3282.0_neutral_~_8j3eq9eme6ctt             Центр управления графикой IntelMicrosoft.MicrosoftSolitaireCollection       Microsoft.MicrosoftSolitaireCollection_4.7.10142.0_neutral_~_8wekyb3d8bbwe     Microsoft Solitaire CollectionMicrosoft.DesktopAppInstaller                Microsoft.DesktopAppInstaller_2020.1112.20.0_neutral_~_8wekyb3d8bbwe           Установщик приложенияMicrosoft.WindowsStore                       Microsoft.WindowsStore_12101.1001.1413.0_neutral_~_8wekyb3d8bbwe               Microsoft StoreMicrosoft.Windows.Photos                     Microsoft.Windows.Photos_2020.20120.4004.0_neutral_~_8wekyb3d8bbwe             Фотографии (Майкрософт)Microsoft.WebMediaExtensions                 Microsoft.WebMediaExtensions_1.0.40471.0_neutral_~_8wekyb3d8bbwe               Расширения для интернет-мультимMicrosoft.WindowsCamera                      Microsoft.WindowsCamera_2021.105.10.0_neutral_~_8wekyb3d8bbwe                  Камера WindowsMicrosoft.StorePurchaseApp                   Microsoft.StorePurchaseApp_12103.1001.813.0_neutral_~_8wekyb3d8bbwe            Узел для покупок в StoreMicrosoft.WindowsTerminal                    Microsoft.WindowsTerminal_2021.413.2245.0_neutral_~_8wekyb3d8bbwe              Windows TerminalMicrosoft.WindowsTerminalPreview             Microsoft.WindowsTerminalPreview_2021.413.2303.0_neutral_~_8wekyb3d8bbwe       Windows Terminal Preview

Аналогичный подход используется для функции восстановления UWP-приложений. Чтобы восстановить пакет, как известно, необходимо вычленить путь до его манифеста.

Восстановление удаленных UWP-приложений для текущего пользователяВосстановление удаленных UWP-приложений для текущего пользователя

Код для получения общего списка всех манифестов выглядит так (можете даже выполнить, если, конечно, не удалили все UWP-приложения):

$Bundles = (Get-AppXPackage -PackageTypeFilter Framework -AllUsers).PackageFullNameGet-ChildItem -Path "HKLM:\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\PackageRepository\Packages" | ForEach-Object -Process {Get-ItemProperty -Path $_.PSPath} | Where-Object -FilterScript {$_.Path -match "Program Files"} | Where-Object -FilterScript {$_.PSChildName -notin $Bundles} | Where-Object -FilterScript {$_.Path -match "x64"} | ForEach-Object -Process {"$($_.Path)\AppxManifest.xml"}
И вы увидите что-то вроде:
C:\Program Files\WindowsApps\A025C540.Yandex.Music_4.40.7713.0_x64__vfvw9svesycw6\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.549981C3F5F10_2.2103.17603.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.BingNews_1.0.6.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.BingWeather_1.0.6.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.11.10771.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.GamingApp_1.0.1.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.GetHelp_10.2102.40951.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.Getstarted_10.2.40751.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.HEIFImageExtension_1.0.40978.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.MicrosoftOfficeHub_18.2008.12711.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.MicrosoftSolitaireCollection_4.9.4072.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.MicrosoftStickyNotes_1.8.15.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.Paint_10.2103.1.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.People_10.1909.12456.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.PowerAutomateDesktop_1.0.31.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.ScreenSketch_11.2103.13.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.SkypeApp_14.53.77.0_x64__kzf8qxf38zg5c\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.StorePurchaseApp_12103.1001.8.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.Todos_0.41.4902.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.VP9VideoExtensions_1.0.40631.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.WebMediaExtensions_1.0.40831.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.WebpImageExtension_1.0.32731.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.Windows.Photos_2021.21030.17018.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.WindowsAlarms_1.0.38.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.WindowsCalculator_10.2103.8.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.WindowsCamera_2020.503.58.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\microsoft.windowscommunicationsapps_16005.13426.20688.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.WindowsFeedbackHub_1.2009.10531.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.WindowsMaps_1.0.27.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.WindowsNotepad_10.2103.6.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.WindowsSoundRecorder_1.0.42.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.WindowsStore_12103.1001.11.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.6.10571.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.Xbox.TCUI_1.23.28002.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.XboxGameOverlay_1.54.4001.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.XboxGamingOverlay_5.621.4072.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.XboxIdentityProvider_12.67.21001.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.XboxSpeechToTextOverlay_1.21.13002.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.YourPhone_1.21022.202.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.ZuneMusic_10.21012.10511.0_x64__8wekyb3d8bbwe\AppxManifest.xmlC:\Program Files\WindowsApps\Microsoft.ZuneVideo_10.21021.10311.0_x64__8wekyb3d8bbwe\AppxManifest.xmlPS C:\Windows\system32\WindowsPowerShell\v1.0> 

Но нам надо сопоставить имя пакета, его локализованное имя в системе и путь до манифеста. Искать будем среди пакетов, которые имеют статус "Staged", то есть готовы к восстановлению.

# Тут нельзя напрямую вписать -PackageTypeFilter Bundle, так как иначе не выдается нужное свойство InstallLocation. Только сравнивать с $Bundles$Bundles = (Get-AppXPackage -PackageTypeFilter Bundle -AllUsers).Name$AppxPackages = Get-AppxPackage -AllUsers | Where-Object -FilterScript {$_.PackageUserInformation -match "Staged"} | Where-Object -FilterScript {$_.Name -in $Bundles}$PackagesIds = [Windows.Management.Deployment.PackageManager, Windows.Web, ContentType = WindowsRuntime]::new().FindPackages() | Select-Object -Property DisplayName -ExpandProperty Id | Select-Object -Property Name, DisplayNameforeach ($AppxPackage in $AppxPackages){$PackageId = $PackagesIds | Where-Object -FilterScript {$_.Name -eq $AppxPackage.Name}if (-not $PackageId){continue}[PSCustomObject]@{Name            = $AppxPackage.NamePackageFullName = $AppxPackage.PackageFullNameDisplayName     = $PackageId.DisplayNameAppxManifest    = "$($AppxPackage.InstallLocation)\AppxManifest.xml"}}

Ну, а дальше уже дело техники. Кстати, если вам надо восстановить все возможные пакеты без разбора, то в этом вам поможет.

# Re-register all UWP apps$Bundles = (Get-AppXPackage -PackageTypeFilter Framework -AllUsers).PackageFullNameGet-ChildItem -Path "HKLM:\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\PackageRepository\Packages" | ForEach-Object -Process {Get-ItemProperty -Path $_.PSPath} | Where-Object -FilterScript {$_.Path -match "Program Files"} | Where-Object -FilterScript {$_.PSChildName -notin $Bundles} | Where-Object -FilterScript {$_.Path -match "x64"} | ForEach-Object -Process {"$($_.Path)\AppxManifest.xml"} | Add-AppxPackage -Register -ForceApplicationShutdown -ForceUpdateFromAnyVersion -DisableDevelopmentMode -Verbose# Check for UWP apps updatesGet-CimInstance -Namespace "Root\cimv2\mdm\dmmap" -ClassName "MDM_EnterpriseModernAppManagement_AppManagement01" | Invoke-CimMethod -MethodName UpdateScanMethod

Мы специально не хотели хардкодить список приложений как на удаление, так и на восстановление, так это слишком топорно. Одним словом, получить локализованные имена приложений реально. Дмитрий создал форму на WPF и накатал логику. Не знаю, почему, но мне с Дмитрием потребовалась, наверное, пара недель, учтя все возможные и невозможные условия использования, заставить всё работать как надо.

Точно таким же способом можно выводить список локализованных имён компонентов Windows и дополнительных компонентов.w

Работает экстремально медленно, но спасает то, что у меня выводится лишь захардоженный список компонентов, которые можно безболезненно отключить (и включить опять, конечно).

Get-WindowsOptionalFeature -Online | ForEach-Object -Process {Get-WindowsOptionalFeature -FeatureName $_.FeatureName -Online} | Select-Object -Property FeatureName, DisplayName | Format-Table -AutoSize
БылоБылоСталоСталоНаши лики, когда, наконец, всё заработалоНаши лики, когда, наконец, всё заработало

Интернационализация скрипта

На необходимость этой фичи обратил внимание @FrankSinatraв комментариях. Интернационализация позволяет избавиться от страшной конструкции вида

if ($RU){}else{}

Отныне в корне папки скрипта находятся папки с названием кода локализации: например, ru-RU, en-US и так далее, где внутри находится файл локализации вида UnsupportedOSBitness = The script supports Windows 10 x64 only. Получить значение локализации можно командой $PSUICulture.

Соответственно, чтобы это всё заработало, мы импортируем указанные локализационные файлы, сохраняя строки в переменную так, чтобы можно было вызывать их в скрипте:

# Sophia.psd1ConvertFrom-StringData -StringData @'UnsupportedOSBitness = The script supports Windows 10 x64 only'@# Sophia.ps1Import-LocalizedData -BindingVariable Global:Localization -FileName Sophia$Localization.UnsupportedOSBitness

И в зависимости от текущей локализации системы скрипт сам будет искать нужный файл. И код чище, и людям приятнее! Ну, а если необходимой локализации нет, то по умолчанию загружается английская.

На сегодня скрипт локализован на 8 языков: английский, китайский, немецкий, французский, итальянский, русский, украинский, турецкий, испанский и португальский. В будущем всё-таки планирую разместить языковые файлы на Crowdin, но немного душит жаба платить столько денег за некоммерческий продукт.

Закрепление ярлыков на начальном экране

Используется при этом чистый PowerShell. Изначально я использовал стороннюю программу syspin, но возникло желание всё-таки избавиться от неё. Как вы знаете, с выходом Windows 10 October 2018 Microsoft без шума закрыл доступ к API открепления (закрепления) ярлыков от начального экрана и панели задач: отныне это можно сделать лишь вручную.

Ниже приведён пример кода для закрепления (открепления) ярлыка на начальный экран, который когда-то работал. Как можете видеть, в коде используется метод получения локализованной строки, и для этого нам необходимо знать код строки, чтобы вызвать соответствующий пункт контекстного меню. В данном примере, чтобы закрепить ярлык командной строки, мы вызываем строку с кодом 51201, Закрепить на начальном экране, из библиотеки %SystemRoot%\system32\shell32.dll.

Получить список всех локализованных строк удобнее всего через стороннюю утилиту ResourcesExtract.

Попытка закрепить ярлык командной строки устаревшим методом:

# Extract a localized string from shell32.dll$Signature = @{Namespace = "WinAPI"Name = "GetStr"Language = "CSharp"MemberDefinition = @"[DllImport("kernel32.dll", CharSet = CharSet.Auto)]public static extern IntPtr GetModuleHandle(string lpModuleName);[DllImport("user32.dll", CharSet = CharSet.Auto)]internal static extern int LoadString(IntPtr hInstance, uint uID, StringBuilder lpBuffer, int nBufferMax);public static string GetString(uint strId){IntPtr intPtr = GetModuleHandle("shell32.dll");StringBuilder sb = new StringBuilder(255);LoadString(intPtr, strId, sb, sb.Capacity);return sb.ToString();}"@}if (-not ("WinAPI.GetStr" -as [type])){Add-Type @Signature -Using System.Text}# Pin to Start: 51201# Unpin from Start: 51394$LocalizedString = [WinAPI.GetStr]::GetString(51201)# Trying to pin the Command Prompt shortcut to Start$Target = Get-Item -Path "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools\Command Prompt.lnk"$Shell = New-Object -ComObject Shell.Application$Folder = $Shell.NameSpace($Target.DirectoryName)$file = $Folder.ParseName($Target.Name)$Verb = $File.Verbs() | Where-Object -FilterScript {$_.Name -eq $LocalizedString}$Verb.DoIt()

Сейчас консоль вываливается с ошибкой Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED).)

Хотя, как можно заметить, API, конечно, отдаёт глагол контекстного меню Закрепить на начальном &экране, но не может его выполнить.

Мы знаем, что текущий макет начального экрана можно выгрузить в формате XML. Но, даже если его настроить должным образом, импортировать макет в профиль текущего пользователя не получится: Import-StartLayout -LayoutPath D:\Layout.xml импортирует макеты начального экрана и панели задач только для новых пользователей.

Идея заключается в том, чтобы использовать политику Макет начального экрана (Prevent users from customizing their Start Screen), отвечающую за подгрузку предзаготовленного макета в формате XML из определённого места. Таким образом, наш хак будет состоять из следующих пунктов:

  • Выгружаем текущий макет начального экрана.

  • Парсим XML, добавляя необходимые нам ярлыки (ссылки должны вести на реально существующие ярлыки), и сохраняем.

  • С помощью политики временно выключаем возможность редактировать макет начального экрана.

  • Перезапускаем меню Пуск.

  • Программно открываем меню Пуск, чтобы в реестре сохранился его макет.

  • Выключаем политику, чтобы можно было редактировать макет начального экрана.

  • И открываем меню Пуск опять.

Вуаля! В данном примере мы настроили начальный экран на лету, закрепив на него три ярлыка для текущего пользователя: панель управления, устройства и принтеры и PowerShell, причём без перезапуска или выхода из учётной записи.

Код целиком:
<#.SYNOPSISConfigure the Start tiles.PARAMETER ControlPanelPin the "Control Panel" shortcut to Start.PARAMETER DevicesPrintersPin the "Devices & Printers" shortcut to Start.PARAMETER PowerShellPin the "Windows PowerShell" shortcut to Start.PARAMETER UnpinAllUnpin all the Start tiles.EXAMPLE.\Pin.ps1 -Tiles ControlPanel, DevicesPrinters, PowerShell.EXAMPLE.\Pin.ps1 -UnpinAll.EXAMPLE.\Pin.ps1 -UnpinAll -Tiles ControlPanel, DevicesPrinters, PowerShell.EXAMPLE.\Pin.ps1 -UnpinAll -Tiles ControlPanel.EXAMPLE.\Pin.ps1 -Tiles ControlPanel -UnpinAll.LINKhttps://github.com/farag2/Windows-10-Sophia-Script.NOTESSeparate arguments with commaCurrent user#>[CmdletBinding()]param([Parameter(Mandatory = $false,Position = 0)][switch]$UnpinAll,[Parameter(Mandatory = $false,Position = 1)][ValidateSet("ControlPanel", "DevicesPrinters", "PowerShell")][string[]]$Tiles,[string]$StartLayout = "$PSScriptRoot\StartLayout.xml")begin{# Unpin all the Start tilesif ($UnpinAll){Export-StartLayout -Path $StartLayout -UseDesktopApplicationID[xml]$XML = Get-Content -Path $StartLayout -Encoding UTF8 -Force$Groups = $XML.LayoutModificationTemplate.DefaultLayoutOverride.StartLayoutCollection.StartLayout.Groupforeach ($Group in $Groups){# Removing all groups inside XML$Group.ParentNode.RemoveChild($Group) | Out-Null}$XML.Save($StartLayout)}}process{# Extract strings from shell32.dll using its' number$Signature = @{Namespace = "WinAPI"Name = "GetStr"Language = "CSharp"MemberDefinition = @"[DllImport("kernel32.dll", CharSet = CharSet.Auto)]public static extern IntPtr GetModuleHandle(string lpModuleName);[DllImport("user32.dll", CharSet = CharSet.Auto)]internal static extern int LoadString(IntPtr hInstance, uint uID, StringBuilder lpBuffer, int nBufferMax);public static string GetString(uint strId){IntPtr intPtr = GetModuleHandle("shell32.dll");StringBuilder sb = new StringBuilder(255);LoadString(intPtr, strId, sb, sb.Capacity);return sb.ToString();}"@}if (-not ("WinAPI.GetStr" -as [type])){Add-Type @Signature -Using System.Text}# Extract the localized "Devices and Printers" string from shell32.dll$DevicesPrinters = [WinAPI.GetStr]::GetString(30493)# We need to get the AppID because it's auto generated$Script:DevicesPrintersAppID = (Get-StartApps | Where-Object -FilterScript {$_.Name -eq $DevicesPrinters}).AppID$Parameters = @(# Control Panel hash table@{# Special name for Control PanelName = "ControlPanel"Size = "2x2"Column = 0Row = 0AppID = "Microsoft.Windows.ControlPanel"},# "Devices & Printers" hash table@{# Special name for "Devices & Printers"Name = "DevicesPrinters"Size   = "2x2"Column = 2Row    = 0AppID  = $Script:DevicesPrintersAppID},# Windows PowerShell hash table@{# Special name for Windows PowerShellName = "PowerShell"Size = "2x2"Column = 4Row = 0AppID = "{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\WindowsPowerShell\v1.0\powershell.exe"})# Valid columns to place tiles in$ValidColumns = @(0, 2, 4)[string]$StartLayoutNS = "http://schemas.microsoft.com/Start/2014/StartLayout"# Add pre-configured hastable to XMLfunction Add-Tile{param([string]$Size,[int]$Column,[int]$Row,[string]$AppID)[string]$elementName = "start:DesktopApplicationTile"[Xml.XmlElement]$Table = $xml.CreateElement($elementName, $StartLayoutNS)$Table.SetAttribute("Size", $Size)$Table.SetAttribute("Column", $Column)$Table.SetAttribute("Row", $Row)$Table.SetAttribute("DesktopApplicationID", $AppID)$Table}if (-not (Test-Path -Path $StartLayout)){# Export the current Start layoutExport-StartLayout -Path $StartLayout -UseDesktopApplicationID}[xml]$XML = Get-Content -Path $StartLayout -Encoding UTF8 -Forceforeach ($Tile in $Tiles){switch ($Tile){ControlPanel{$ControlPanel = [WinAPI.GetStr]::GetString(12712)Write-Verbose -Message ("The `"{0}`" shortcut is being pinned to Start" -f $ControlPanel) -Verbose}DevicesPrinters{$DevicesPrinters = [WinAPI.GetStr]::GetString(30493)Write-Verbose -Message ("The `"{0}`" shortcut is being pinned to Start" -f $DevicesPrinters) -Verbose# Create the old-style "Devices and Printers" shortcut in the Start menu$Shell = New-Object -ComObject Wscript.Shell$Shortcut = $Shell.CreateShortcut("$env:APPDATA\Microsoft\Windows\Start menu\Programs\System Tools\$DevicesPrinters.lnk")$Shortcut.TargetPath = "control"$Shortcut.Arguments = "printers"$Shortcut.IconLocation = "$env:SystemRoot\system32\DeviceCenter.dll"$Shortcut.Save()Start-Sleep -Seconds 3}PowerShell{Write-Verbose -Message ("The `"{0}`" shortcut is being pinned to Start" -f "Windows PowerShell") -Verbose}}$Parameter = $Parameters | Where-Object -FilterScript {$_.Name -eq $Tile}$Group = $XML.LayoutModificationTemplate.DefaultLayoutOverride.StartLayoutCollection.StartLayout.Group | Where-Object -FilterScript {$_.Name -eq "Sophia Script"}# If the "Sophia Script" group exists in Startif ($Group){$DesktopApplicationID = ($Parameters | Where-Object -FilterScript {$_.Name -eq $Tile}).AppIDif (-not ($Group.DesktopApplicationTile | Where-Object -FilterScript {$_.DesktopApplicationID -eq $DesktopApplicationID})){# Calculate current filled columns$CurrentColumns = @($Group.DesktopApplicationTile.Column)# Calculate current free columns and take the first one$Column = (Compare-Object -ReferenceObject $ValidColumns -DifferenceObject $CurrentColumns).InputObject | Select-Object -First 1# If filled cells contain desired ones assign the first free columnif ($CurrentColumns -contains $Parameter.Column){$Parameter.Column = $Column}$Group.AppendChild((Add-Tile @Parameter)) | Out-Null}}else{# Create the "Sophia Script" group[Xml.XmlElement]$Group = $XML.CreateElement("start:Group", $StartLayoutNS)$Group.SetAttribute("Name","Sophia Script")$Group.AppendChild((Add-Tile @Parameter)) | Out-Null$XML.LayoutModificationTemplate.DefaultLayoutOverride.StartLayoutCollection.StartLayout.AppendChild($Group) | Out-Null}}$XML.Save($StartLayout)}end{# Temporarily disable changing the Start menu layoutif (-not (Test-Path -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer)){New-Item -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Force}New-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name LockedStartLayout -Value 1 -ForceNew-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name StartLayoutFile -Value $StartLayout -ForceStart-Sleep -Seconds 3# Restart the Start menuStop-Process -Name StartMenuExperienceHost -Force -ErrorAction IgnoreStart-Sleep -Seconds 3# Open the Start menu to load the new layout$wshell = New-Object -ComObject WScript.Shell$wshell.SendKeys("^{ESC}")Start-Sleep -Seconds 3# Enable changing the Start menu layoutRemove-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name LockedStartLayout -Force -ErrorAction IgnoreRemove-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name StartLayoutFile -Force -ErrorAction IgnoreRemove-Item -Path $StartLayout -ForceStop-Process -Name StartMenuExperienceHost -Force -ErrorAction IgnoreStart-Sleep -Seconds 3# Open the Start menu to load the new layout$wshell = New-Object -ComObject WScript.Shell$wshell.SendKeys("^{ESC}")}

Создаваемые задания в планировщике заданий

Для начала разберём две задачи по автоматизации очистки папок %TEMP% и %SystemRoot%\SoftwareDistribution\Download. Эти папки полезно очищать по расписанию, чтобы они не разрастались. На текущий момент папка временных файлов самоочищается раз в 60 дней, а папка, куда скачиваются установочные файлы для обновлений, раз в 90 дней.

По завершении задания были добавлены нативные всплывающие тосты, так сказать, из информационно-эстетических соображений.

Windows 10 позволяет генерировать такие тосты очень просто. Пример всплывающего тоста, как на картинке выше:

[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime] | Out-Null[xml]$ToastTemplate = @"<toast duration="Long"><visual><binding template="ToastGeneric"><text>Уведомление</text><group><subgroup><text hint-style="body" hint-wrap="true">Кэш обновлений Windows успешно удален</text></subgroup></group></binding></visual><audio src="ms-winsoundevent:notification.default" /></toast>"@$ToastXml = [Windows.Data.Xml.Dom.XmlDocument]::New()$ToastXml.LoadXml($ToastTemplate.OuterXml)$ToastMessage = [Windows.UI.Notifications.ToastNotification]::New($ToastXML)[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel").Show($ToastMessage)

В вызове CreateToastNotifier можно указывать приложение, иконка которого будет отображаться в верхнем левом углу тоста и которое будет открываться при нажатии на тост. В данном случае я использовал windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel "Настройки". Но вы вольны указать любые приложения. Узнать список всех установленных приложений и их AppID нам поможет команда Get-StartApps.

Напомню, что задача по очистке папки для временных файлов удаляет лишь файлы старше суток:

Get-ChildItem -Path $env:TEMP -Recurse -Force | Where-Object {$_.CreationTime -lt (Get-Date).AddDays(-1)} | Remove-Item -Recurse -Force

А задача по очистке папки %SystemRoot%\SoftwareDistribution\Download ждёт остановку службы wuauserv (Центр обновления Windows), чтобы в дальнейшем очистить папку

(Get-Service -Name wuauserv).WaitForStatus('Stopped', '01:00:00')

С заданием по запуску очистки диска и DISM с аргументами всё гораздо веселее. Изначально стояла задача просто запускать предзаготовленный пресет настроек для очистки диска и очистку ненужных обновлений, используя DISM: dism.exe /Online /English /Cleanup-Image /StartComponentCleanup /NoRestart.

Но пришлось решать, как заставить задание запускать очистку диска, сворачивать его окно, а потом также минимизировать окно консоли с запущенным DISM.

Сложность состоит в том, что при запуске очистки диска сначала открывается первое окошко со сканированием того, что можно очистить, потом оно закрывается, и только после этого открывается новое окошко (с новым MainWindowHandle) уже непосредственно с очисткой.

Если первое окошко достаточно легко свернуть:

$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo$ProcessInfo.FileName = "$env:SystemRoot\system32\cleanmgr.exe"$ProcessInfo.Arguments = "/sagerun:1337"$ProcessInfo.UseShellExecute = $true$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized

То над тем, как свернуть второе, я поломал голову, конечно. После многих попыток хоть за что-то зацепиться, я понял, что:

только MainWindowHandle окна может помочь
Get-Process -Name cleanmgr | Stop-Process -ForceGet-Process -Name Dism | Stop-Process -ForceGet-Process -Name DismHost | Stop-Process -Force$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo$ProcessInfo.FileName = "$env:SystemRoot\system32\cleanmgr.exe"$ProcessInfo.Arguments = "/sagerun:1337"$ProcessInfo.UseShellExecute = $true$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized$Process = New-Object -TypeName System.Diagnostics.Process$Process.StartInfo = $ProcessInfo$Process.Start() | Out-NullStart-Sleep -Seconds 3[int]$SourceMainWindowHandle = (Get-Process -Name cleanmgr | Where-Object -FilterScript {$_.PriorityClass -eq "BelowNormal"}).MainWindowHandlefunction MinimizeWindow{[CmdletBinding()]param([Parameter(Mandatory = $true)]$Process)$ShowWindowAsync = @{Namespace = "WinAPI"Name = "Win32ShowWindowAsync"Language = "CSharp"MemberDefinition = @'[DllImport("user32.dll")]public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);'@}if (-not ("WinAPI.Win32ShowWindowAsync" -as [type])){Add-Type @ShowWindowAsync}$MainWindowHandle = (Get-Process -Name $Process | Where-Object -FilterScript {$_.PriorityClass -eq "BelowNormal"}).MainWindowHandle[WinAPI.Win32ShowWindowAsync]::ShowWindowAsync($MainWindowHandle, 2)}while ($true){[int]$CurrentMainWindowHandle = (Get-Process -Name cleanmgr | Where-Object -FilterScript {$_.PriorityClass -eq "BelowNormal"}).MainWindowHandleif ($SourceMainWindowHandle -ne $CurrentMainWindowHandle){MinimizeWindow -Process cleanmgrbreak}Start-Sleep -Milliseconds 5}$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo$ProcessInfo.FileName = "$env:SystemRoot\system32\dism.exe"$ProcessInfo.Arguments = "/Online /English /Cleanup-Image /StartComponentCleanup /NoRestart"$ProcessInfo.UseShellExecute = $true$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized$Process = New-Object -TypeName System.Diagnostics.Process$Process.StartInfo = $ProcessInfo$Process.Start() | Out-Null

Как видно из кода, $SourceMainWindowHandle первого окна ждёт, пока появится $CurrentMainWindowHandle второго окна, и, если, они не равны, то можно минимизировать новое окно. Дальше уже можно запускать DISM с ключами.

Но на этом я не остановился. Понял, что, возможно, пользователю будет неудобно, что за него решают, когда запускается такая задача (которая иногда может потребовать достаточное количество времени). Поэтому пришла идея сделать интерактивный всплывающий тост!

Как видно на скриншоте, пользователю предоставляются на выбор 3 варианта развития событий: отложить вопрос на 1, 30 минут или 4 часа, полностью отклонить предложение (тогда задача запустится через 30 дней) или запустить.

Как устроено это окно. Это всё тот же тост, но, чтобы создать кнопку, запускающую что-либо, кроме открытия страницы в браузере, необходимо сначала зарегистрировать новый протокол. В примере ниже показывается, как я регистрирую протокол WindowsCleanup:

if (-not (Test-Path -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup)){New-Item -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup -Force}New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup -Name "(default)" -PropertyType String -Value "URL:WindowsCleanup" -ForceNew-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup -Name "URL Protocol" -Value "" -ForceNew-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup -Name EditFlags -PropertyType DWord -Value 2162688 -Forceif (-not (Test-Path -Path Registry::HKEY_CLASSES_ROOT\shell\open\command)){New-item -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Force}# If "Run" clicked run the "Windows Cleanup" taskNew-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Name "(default)" -PropertyType String -Value 'powershell.exe -Command "& {Start-ScheduledTask -TaskPath ''\Sophia Script\'' -TaskName ''Windows Cleanup''}"' -Force

А потом привязываю его на кнопку запуска:

<action arguments="WindowsCleanup:" content="$($Localization.Run)" activationType="protocol"/>

Всё вместе выглядит так:
# Persist the Settings notifications to prevent to immediately disappear from Action Centerif (-not (Test-Path -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings\windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel")){New-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings\windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel" -Force}New-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings\windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel" -Name ShowInActionCenter -PropertyType DWord -Value 1 -Force# Register the "WindowsCleanup" protocol to be able to run the scheduled task upon clicking on the "Run" buttonif (-not (Test-Path -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup)){New-Item -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup -Force}New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup -Name "(default)" -PropertyType String -Value "URL:WindowsCleanup" -ForceNew-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup -Name "URL Protocol" -Value "" -ForceNew-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup -Name EditFlags -PropertyType DWord -Value 2162688 -Forceif (-not (Test-Path -Path Registry::HKEY_CLASSES_ROOT\shell\open\command)){New-item -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Force}# If "Run" clicked run the "Windows Cleanup" taskNew-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Name "(default)" -PropertyType String -Value 'powershell.exe -Command "& {Start-ScheduledTask -TaskPath ''\Sophia Script\'' -TaskName ''Windows Cleanup''}"' -Force[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime] | Out-Null[xml]$ToastTemplate = @"<toast duration="Long" scenario="reminder"><visual><binding template="ToastGeneric"><text>$($Localization.CleanupTaskNotificationTitle)</text><group><subgroup><text hint-style="title" hint-wrap="true">$($Localization.CleanupTaskNotificationEventTitle)</text></subgroup></group><group><subgroup><text hint-style="body" hint-wrap="true">$($Localization.CleanupTaskNotificationEvent)</text></subgroup></group></binding></visual><audio src="ms-winsoundevent:notification.default" /><actions><input id="SnoozeTimer" type="selection" title="$($Localization.CleanupTaskNotificationSnoozeInterval)" defaultInput="1"><selection id="1" content="$($Localization.Minute)" /><selection id="30" content="$($Localization.Minute)" /><selection id="240" content="$($Localization.Minute)" /></input><action activationType="system" arguments="snooze" hint-inputId="SnoozeTimer" content="" id="test-snooze"/><action arguments="WindowsCleanup:" content="$($Localization.Run)" activationType="protocol"/><action arguments="dismiss" content="" activationType="system"/></actions></toast>"@$ToastXml = [Windows.Data.Xml.Dom.XmlDocument]::New()$ToastXml.LoadXml($ToastTemplate.OuterXml)$ToastMessage = [Windows.UI.Notifications.ToastNotification]::New($ToastXML)[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel").Show($ToastMessage)

Функция ассоциации файлов

Как известно, начиная с Windows 8 невозможно самостоятельно ассоциировать какое-либо расширение с программой, не вычислив правильный хэш. Как выяснилось, Microsoft проводит манипуляции с захардоженной строкой "User Choice set via Windows User Experience {D18B6DD5-6124-4341-9318-804003BAFA0B}".

Пользователь Danyfirex смог реализовать правильное вычисление хэш-суммы на чистом PowerShell, но, к сожалению, после проведённых тестов выяснилось, что сам PowerShell 5.1 считает его неправильно, поэтому я вынужден был использовать код другого разработчика с алгоритмом, реализованным на чистом C#. Крайне быстро! Функция огромная, поэтому просто оставлю просто ссылку на код.

Автоматизация установки бесплатного расширения для встроенного UWP-приложения Фотографии

Еще одна забавная, но крайне полезная функция даёт возможность открывать файлы формата .heic и .heif.

Расширение крайне полезное, так как все современные телефоны умеют делать фотографии в формате HEIC, но по умолчанию Windows 10 не умеет открывать такие файлы, предлагая купить расширение в Microsoft Store по цене в 0,99 $. Но мало кто знает, что есть скрытая страница от поиска этого же самого расширения, но предназначенного для OEM-производителей. Эту же страницу можно открыть вручную, выполнив через Win+R или через PowerShell: ms-windows-store://pdp/?ProductId=9n4wgh0z6vhq

Для скачивания установочного пакета на помощь приходит всеми известный сайт https://store.rg-adguard.net. Он позволяет, зная ID страницы, получать временные прямые ссылки на установочные пакеты. Значит, можно распарсить.

$API = "https://store.rg-adguard.net/api/GetFiles"# HEVC Video Extensions from Device Manufacturer$ProductURL = "https://www.microsoft.com/store/productId/9n4wgh0z6vhq"$Body = @{"type" = "url""url"  = $ProductURL"ring" = "Retail""lang" = "en-US"}$Raw = Invoke-RestMethod -Method Post -Uri $API -ContentType 'application/x-www-form-urlencoded' -Body $Body# Parsing the page$Raw | Select-String -Pattern '<tr style.*<a href=\"(?<url>.*)"\s.*>(?<text>.*)<\/a>' -AllMatches | ForEach-Object -Process {$_.Matches} | ForEach-Object -Process {$TempURL = $_.Groups[1].Value$Package = $_.Groups[2].Valueif ($Package -like "Microsoft.HEVCVideoExtension_*_x64__8wekyb3d8bbwe.appx"){[PSCustomObject]@{PackageName = $PackagePackageURL  = $TempURL}}}

Дальше уже дело техники сохранить и установить скачанный пакет.

Автопродление имен функций по введённым буквам, содержащимся в названии функции или её аргумента

Это последняя значимая функция, добавленная в версию 5.10. Пользователи попросили добавить автопродление функций и их аргументов с помощью табуляции, вводя буквы, содержащиеся в названии функции или её аргументов.

Проблема в том, что до этого была лишь возможность вручную указывать функции и их аргументы а-ля .\Sophia.ps1 -Functions "DiagTrackService -Disable", "DiagnosticDataLevel -Minimal", UninstallUWPApps.

То есть ни о каком автопродлении речи и не шло: пользователю приходилось или запоминать имя функции и её аргумент, или копировать вручную данную комбинацию из пресет-файла. То ли дело сейчас!

Чтобы заработала сия шайтан-машина, пришлось прибегнуть к Register-ArgumentCompleter.

Весь код сосредоточен в отдельном файле, и не получится его поместить в текущий пресет-файл: файл необходимо вызывать с использованием dot sourcing. Одним словом, пришлось в ScriptBlock для argumentcompleter перебирать все возможные варианты конструкций вида "функция-аргумент" и просто "функция", если у последней нет собственного аргумента.

Теперь, чтобы вызвать, допустим, функцию по удалению UWP-приложений, можно ввести (после загрузки Functions.ps1) So<tab> -Fu<tab> uwp<tab>.

Крайне жутко выглядит, но стало гораздо удобнее.

Ну, а закончу рассказ на том, что даже сборка прикрепляемых архивов на странице релизов стала осуществляться с помощью конфига Github Actions. Как можно заметить, для создания архива под версию для PowerShell 7 приходится выкачивать две библиотеки с ресурсов Microsoft, так как загрузить файлы больше 25 МБ в репозиторий невозможно. Автоматизируй автоматизацию!

Итоги

Это были крайне плодотворные полгода. У нас такое ощущение, что мы прошли PowerShell на уровне "Ultra Violence". Ну, а что дальше? Параллельно я прорабатываю вариант, как реализовать, используя текущий паттерн взаимодействия пользователя со скриптом, настройку офлайновых образов WIM. Но главный приоритет для нас сейчас, конечно, разработка SophiApp.

Цель проекта показать, как, по нашему мнению, должен выглядеть, чувствоваться и каким функционалом обладать так называемый твикер для Windows 10. Идей просто огромное количество! Хотя у нас нет опыта в разработке и нас всего лишь двое, а весь код на SophiApp пишет в одиночку Дмитрий, возможно, летом уже появится первый рабочий билд. Но это уже совсем другая история.

Хочу выразить огромную благодарность также пользователям forum.ru-board westlife и iNNOKENTIY21: ребят, без вашей помощи и подсказок, всё было бы по-другому! А логотип нарисовала художница tea_head, за что ей тоже спасибо. Скрины, использованные в материале, взяты из мультфильма Коргот-варвар. Любите Windows 10, настраивайте её с умом и до новых встреч!

А если хотите прокачать себя, например получить навыки пентестера и зарабатывать на уязвимостях, или подтянуть знания алгоритмов и структур данных приходите учиться, будет сложно, но интересно!

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы
Подробнее..

Очередная причуда Win 10 и как с ней бороться

13.05.2021 00:05:04 | Автор: admin

Квалификацию надо иногда повышать, и вообще учиться для мозгов полезно. А потому пошел я недавно на курсы - поизучать Python и всякие его фреймворки. На днях вот до Django добрался. И тут мы в ходе обучения коллективно выловили не то чтобы баг, но дивный эффект на стыке Python 3, Sqlite 3, JSON и Win 10. Причем эффект был настолько дивен, что гугль нам не помог - пришлось собираться всей заинтересованной группой вместе с преподавателем и коллективным разумом его решать.
А дело вот в чем: изучали мы базу данных (а у Django предустановлена Sqlite 3) и, чтоб каждый раз заново руками данные не вбивать, прикрутили загрузку скриптом из json-файлов. А в файлы данные из базы штатно дампили питоновскими же методами:

python manage.py dumpdata -e contenttypes -o db.json

Внезапно те, кто работал под виндой (за все версии не поручусь, у нас подобрались только обитатели Win 10), обнаружили, что дамп у них производится в кодировке windows-1251. Более того, джейсоны в этой кодировке отлично скармливаются базе. Но стоило только переформатировать их в штатную по документам для Sqlite 3, Python 3 и особенно для JSON кодировку UTF-8, как в лучшем случае кириллица в базе превращалась в тыкву, а в худшем ломался вообще весь процесс загрузки данных.
Ничего подобного найти не удалось ни в документации, ни во всем остальном гугле, считая и англоязычный. Что самое загадочное, ручная загрузка тех же самых данных через консоль или админку проекта работала как часы, хотя уж там-то кодировка была точно UTF-8. Более того, принудительное прописывание кодировки базе никакого эффекта не дало.
Мы предположили, что причиной эффекта было взаимодействие джейсона с операционной системой - каким-то образом при записи и чтении именно джейсонов система навязывала свою родную кодировку вместо нормальной. И действительно, когда при открытии файла принудительно устанавливалась кодировка UTF-8:

open(os.path.join(JSON_PATH, file_name + '.json'), 'r', encoding="utf-8")

в базу попадали не кракозябры, а нормальные русские буквы. Но проблему с созданием дампа таким способом не решишь, а переделывать кодировку потом руками тоже как-то не по-нашему. И тогда мы решили поискать способ укротить винду.
И такой способ нашелся. Вот он:

  • открываем панель управления, но не новую красивую, а старую добрую:

  • открываем (по стрелке) окошко региона:

  • по стрелкам переключаем вкладку "Дополнительно" и открываем окошко "Изменить язык системы":

  • и в нем ставим галку по стрелке в чекбоксе "Бета-версия: Использовать Юникод (UTF-8) для поддержки языка во всем мире.

Система потребует перезагрузки, после чего проблема будет решена.

Не могу сказать, чтобы этот мелкий странный баг был так уж важен или интересен (питоновские проекты обычно живут под линуксами, где такого не бывает), но мозги он нам поломал изрядно - вследствие чего я и решил написать эту заметку. Мало ли кто еще из новичков как раз во время учебы попадется.

Подробнее..
Категории: Python , Python3 , Sqlite , Json , Windows 10 , Encodings

Настройка GUI WSL Kali Linux amp Ubuntu. Выход в графическую оболочку

27.08.2020 00:20:19 | Автор: admin
Здравствуйте. Установив WSL и скачав из Microsoft Store Kali Linux & Ubuntu я столкнулся с тем, что передо мной терминал, а я абсолютно ничего не понимая в Linux, хотел бы хоть как-то ориентироваться в системе через графическую оболочку. Я неделями гуглил команды и в итоге написал скрипт для настройки. Делюсь, может кому поможет

Ещё раз оговорюсь, что в Linux я абсолютно не понимал ничего, поэтому культурная критика и дополнения к скрипту приветствуются в комментариях.
Так же сложность оказалась в том, что KALI поменяли команды, и я следуя туториалам на 2019 версию уже натыкался на ошибки отсутствия дистрибутива в репозитории.
Статья подразумевает, что вы уже установили WSL и скачали дистрибутив из Microsoft Store, и перед вами терминал. Скрипт писался на системе 26.08.2020
lsb_release -aNo LSB modules are available.Distributor ID: KaliDescription:    Kali GNU/Linux RollingRelease:        2020.3Codename:       kali-rolling

Настройка Kali


  1. Первым делом вам предложат создать пользователя: введите логин и пароль
  2. далее создаём скрипт:
    sudo nano /usr/local/bin/kali-sonax.sh
    
    и вставляем содержимое скрипта
  3. СОДЕРЖИМОЕ СКРИПТА ДЛЯ KALI LINUX
    #!/bin/bashecho "Sonax Kali Setup"## МЕНЯЕМ ЗДЕСЬ НА НУЖНЕ ДАННЕ!port_xrdp=3390 #порт подключения по RDPusername="sonax" #логин. Если хотите каждый раз вводить напишите "ask"password="pass"  #пароль Если хотите каждый раз вводить напишите "ask"## Закончили менять. Дальше ничего не трогаемsudo apt update -y && sudo apt upgrade -ysudo apt install -y kali-desktop-xfce xrdp # для Ubuntu замените kali-desktop-xfce на xubuntu-desktop#XRDPsudo cp -n /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak #(бэкапим оригинал)sudo sed -i 's/3389/'$port_xrdp'/g' /etc/xrdp/xrdp.ini #(Смена порта со стандартного 3389 на указанный в переменной выше)sudo sed -i '186s/username=ask/username='$username'/g' /etc/xrdp/xrdp.ini #(логин, что бы не вводить)sudo sed -i '187s/password=ask/password='$password'/g' /etc/xrdp/xrdp.ini #(пароль, что бы не вводить)sudo sed -i 's/max_bpp=32/#max_bpp=32\nmax_bpp=128/g' /etc/xrdp/xrdp.ini #(Цветопередача не 32, а 128 пикселей)sudo sed -i 's/xserverbpp=24/#xserverbpp=24\nxserverbpp=128/g' /etc/xrdp/xrdp.inisudo /etc/init.d/xrdp start#END XRDP
    
  4. В блоке "## МЕНЯЕМ ЗДЕСЬ НА НУЖНЕ ДАННЕ!" введите порт подключения(можете оставить и так), логин, пароль. Сохраняем (cntrl+x ->y->enter). Скрипт создан
  5. далее задаём права Chmod, разрешаем запустить скрипт
    sudo chmod ugo+x /usr/local/bin/kali-sonax.sh
    
  6. И запускаем скрипт
    kali-sonax.sh
    
  7. Ждём загрузки всего необходимого, следуем инструкциям на экране
  8. Сервис xrdp уже запущен из скрипта, но в следующий раз запускать его нужно в ручную, как заходите на виртуальную ОС. Команды запуска
    sudo /etc/init.d/xrdp start
    

    или
    sudo service xrdp start{start|stop|status|restart|try-restart|force-reload}
    
  9. Заходим на стандартное средство RDP Windows, в поиске введите RDP или в командной строке введите mstsc
  10. вводите localhost:3300 или другой порт, что вы указали и нажимайте соединиться

Ubuntu


На Ubuntu всё тоже самое, только вместо kali-desktop-xfce введите xubuntu-desktop.

Заключение


Спасибо за прочтение статьи. Если будут в комментариях пожелания\замечания\угрозы\шантаж\насилие, то статья будет дополняться\обновляться. Надеюсь, кому-нибудь пригодится.
Подробнее..

Превью-обзор консоли Atari VCS

08.01.2021 18:05:33 | Автор: admin

Под конец года всем предзаказавшим Atari VCS на ресурсе Indie Go-Go (краудфандинговая площадка аналог Кикстартера) отправили подарок. И пока все продолжают обсуждать новые консоли от Sony и Microsoft (к которым скоро присоединится новый Переключатель от Нинтендо), давайте выясним, что за зверь такой эта Atari VCS.

Дизайн консоли и геймпадов

Изначально релиз планировали на июль 2019 года, но широкой публике консоль станет доступна только во второй половине 2021 года. Дизайн VCS восходит к оригинальной Atari 2600. Устройство меньше, но имеет ту же переднюю панель из дерева и рёбра по типу жалюзи. И честно говоря, мне такой дизайн нравится больше, чем у консолей предполагаемых конкурентов.

Правда, деревянная панель идёт в ограниченной серии и основной публике доступна лишь более простая версия дизайна полностью в чёрном цвете.

Atari в сотрудничестве с производителем игровой периферии PowerA разработали два контроллера. Классический джойстик похож на контроллер от модели 2600. Он теперь беспроводной со встроенным аккумулятором. Клавиш стало больше: сбоку добавили вторую кнопку огня, клавишу включения и ещё пару для управления меню консоли. Вокруг рукоятки появилась светодиодная подсветка, которая реагирует на её положение.

Несмотря на привлекательный дизайн джойстику не хватает функционала. Во сколько современных проектов можно играть с одним стиком и двумя кнопками? Таким образом, контроллер предназначен только для классических игр.

Современный контроллер напоминает геймпад от Xbox One с направляющим диском, заменяющим привычную крестовину.

Оба контроллера хорошо сконструированы и доступны по адекватной цене в 60 долларов. Правда, на данный момент возникают проблемы с подключением. Современный контроллер не выводит консоль из спящего режима, а его беспроводное подключение занимает много времени. Но можно ожидать, что последующие обновления прошивки решат эти проблемы.

Владельцы VCS могут использовать сторонние контроллеры: проводные, Bluetooth и с USB-брелками (например, как линейка известных геймпадов 8BitDo).

Начинка консоли и апгрейд

Приставка работает на процессоре AMD Ryzen Embedded R1606G с видеочипом Vega 3. Это ноутбучные комплектующие, рассчитанные на офисное применение. Таким образом, Atari VCS не способна соревноваться с консолями последнего поколения от Сони и Майкрософт. Устаревшее железо можно объяснить задержкой релиза более чем на год. Некстген-консоли тоже проигрывают в производительности современным ПК, но не в сравнении с бюджетными процессорами.

Приставка поставляется с 8 ГБ оперативной памяти: две планки DDR4 2400 SO-DIMM по 4 ГБ. Объём можно увеличить до 32 ГБ (16 ГБ x 2). Консоль оснащена накопителем eMMC на 32 ГБ, но внутри есть разъём M.2 для установки жёсткого диска. Также через USB можно подключить внешний диск.

Подключение по Bluetooth и Wi-Fi оставляют желать лучшего. Оба соединения часто обрываются, а Wi-Fi и вовсе может перестать работать, пока вы не перезагрузите приставку. К счастью, порт Ethernet работает отлично. Скорее всего, все эти проблемы решат с обновлениями системы.

Апгрейд консоли делать очень не удобно внутренний дизайн и архитектуру явно не продумывали. Чтобы добавить памяти или установить жесткий диск потребуется почти полностью разобрать устройство! Будь это ПК никто бы не обратил внимания, но для консоли это неприемлемо.

Понятно, что Atari VCS не способна соперничать с Sony и Microsoft, но у неё есть шансы стать заменой Apple TV или Nvidia Shield. В режиме ПК вы не сможете запустить современные игры, но инди-проекты библиотеки Steam пойдут без проблем. И разумеется, приставка отлично справляется с эмуляцией старых игр.

Atari OС

Операционная система Atari на базе Debian крайне проста и не радует инструментарием. ОС служит интерфейсом для запуска приложений и игр, установленных через витрину магазина. Она красиво выглядит, но имеет проблемы с производительностью. Хоть консоль и поддерживает 4K, но интерфейс в таком режиме тормозит. Опять же, это поправят обновлениями прошивки, но такое железо не потянет 4К даже в нетребовательной игре. Очевидно, что этот функционал рассчитан на стриминг и просмотр видео.

Консоль поставляется с установленным сборником игр Atari Vault Vol. 1. В магазине есть несколько приложений и игр, но выбор не блещет разнообразием. В приложении Atari Vault есть классика Atari, и вы сможете пополнить там библиотеку. Но ценники на игры кусаются: платить от 5 до 20 долларов за малоизвестные игры, которые не затянут более чем на час сомнительное удовольствие.

Большинство приложений являются просто закладками в браузере. При их запуске открывается браузер Chrome и вы просто попадете на сайт.

Сторонняя ОС или режим ПК

Самая привлекательная опция Atari VCS это возможность установки второй ОС. Учитывая сырую ось от самой компании, это отличный способ получить больше функционала от оборудования. Но и здесь не всё гладко

В настоящее время доступ к BIOS заблокирован программно. Это означает, что безопасная загрузка включена принудительно, и пользователи не могут изменить порядок загрузки. Безопасная загрузка ограничивает количество операционных систем, которые можно запустить на консоли. Ubuntu самый распространенный дистрибутив Linux отлично работает на Atari VCS, но многие другие разновидности Линукса несовместимы с Secure Boot. Также на приставку можно поставить Windows.

Если готовы к слайд-шоу, можете запустить на приставке современную игруЕсли готовы к слайд-шоу, можете запустить на приставке современную игруWindows 10 тоже поддерживаетсяWindows 10 тоже поддерживается

Итог

Atari VCS это просто более привлекательная (внешне) версия мини-ПК, представленных на рынке. Однако, в отличие от этих железок, заблокированный BIOS не позволяет пользователям использовать консоль для своих целей. Сырое состояние стандартной ОС от Atari и прочие проблемы, пока не позволяют её рекомендовать. Разве что у вас есть лишние деньги (полный комплект вместе с геймпадами обойдётся в 400 $) и хотите повозиться с чудной железкой.

Atari заявила об эксклюзивных играх для платформы, но известные студии не станут работать с непопулярной платформой. Консоль привлечёт ретрогеймеров и ностальгаторов, но современное поколение пройдёт мимо.

Вспоминается провальная консоль на Андроиде Ouya, которая тоже набрала достаточно средств на Кикстартере, но канула в Лету после запуска. И это несмотря на уверения Фиргала Мак Конулада генерального менеджера Atari о том, что они учли ошибки, приведшие к коммерческому провалу Ouya. Конечно, у Атари есть своя фан-база, правда сомневаюсь, что это им сильно поможет.

Atari VCS постигнет та же судьба?Atari VCS постигнет та же судьба?

Для написания превью использовал следующие материалы:

Обзор с сайта GameRevolution

Статью на Википедии

Видео блогера Kevin Kenson

Оффициальный сайт Atari VCS

Подробнее..

Перевод Все нововведения Windows 10 October 2020 Update

20.10.2020 22:18:35 | Автор: admin

Сегодня стала доступны ISO-образы для скачивания Windows 10 October 2020 Update (20H2) через Media Creation Tool, а форсировать получение обновления можно через Помощник по обновлению. Финальным билдом стал 19042.572.20h2_release_svc_refresh.201009-1947. Это обновление ориентировано на исправление ошибок и увеличение производительности, но в нем также присутствуют некоторые более крупные изменения: удален классический апплет "Система" в панели управления.

Не так много нового, и это радует

В прошлом году вышло небольшое обновление 19H2 (November 2019 Update), за которым последовало более крупное 20H1 (May 2020 Update). Microsoft настаивала на том, что у нее не было планов делать каждый год небольшое обновление, за которым следовало бы большое. В этот раз версия 20H2 могла стать еще одним крупным обновлением с большим количеством функций, но вместо этого Microsoft использовало существующее версию 20H1 с целью ее усовершенствования.

После всех усилий, направленных на полировку и исправление ошибок, это обновление должно быть достаточно стабильным. Хорошие новости, пользователи Windows 10!

Во всяком случае, это перевод с "языка Microsoft" того, что происходит. Вот как это описывает сама Microsoft: "Windows 10 версии 20H2 будет предлагать ограниченный набор функций для повышения производительности и качества".

Это обновление будет также быстро устанавливаться, как и версия 19H2: если у вас уже стоит May 2020 Update (20H1), то установка будет такой же быстрой, как и установка обычного ежемесячного обновления длительная загрузка или длительная перезагрузка не потребуются.

Microsoft удалила апплет "Система" в Панели управления

http://personeltest.ru/aways/www.howtogeek.com/684812/whats-new-in-windows-10s-20h2-update-arriving-fall-2020/https://www.howtogeek.com/684812/whats-new-in-windows-10s-20h2-update-arriving-fall-2020/

В этой версии Windows удален классический апплет "Система" в панели управления. Когда вы попытаетесь открыть его, вы попадете на страницу "О программе" в "Настройках". Вся информация, содержащаяся в области настроек в панели управления, доступна теперь в "Настройках". Присутствует удобная кнопка "Копировать", чтобы скопировать весь текст на странице в буфер обмена. Также вы найдете кнопки внизу страницы для открытия дополнительных системных настроек, таких как настройки BitLocker и диспетчер устройств.
Это всего лишь еще один шаг в долгом и медленном процессе постепенного отказа Microsoft от панели управления. Однако панель управления не исчезнет в ближайшее время: в ней слишком много полезных опций, и Microsoft очень медленно переносит их в новое приложение "Настройки".

Новый встроенный Microsoft Edge

http://personeltest.ru/aways/www.howtogeek.com/684812/whats-new-in-windows-10s-20h2-update-arriving-fall-2020/https://www.howtogeek.com/684812/whats-new-in-windows-10s-20h2-update-arriving-fall-2020/

Microsoft гордится тем, что это первая версия Windows 10 с новым браузером Microsoft Edge на основе Chromium. Новый Edge также доступен для загрузки с сайта Microsoft, начиная с 15 января 2020 года. Но в этом выпуске он стал официальным: новый Edge заменяет старый в базовой версии Windows 10.

Доступ к приложениям Android на телефоне Samsung с ПК

http://personeltest.ru/aways/answers.microsoft.com/en-us/insider/forum/all/apps-feature-your-phone-app/257c45ca-852a-4fce-93a4-6302c20e2e39https://answers.microsoft.com/en-us/insider/forum/all/apps-feature-your-phone-app/257c45ca-852a-4fce-93a4-6302c20e2e39

Microsoft расширяет функционал приложения "Ваш телефон", предназначенный для "избранных устройств Samsung". Если у вас есть один из этих телефонов, теперь вы можете получить доступ к приложениям Android на своем телефоне прямо на ПК с Windows 10. Приложения будут работать на вашем телефоне, но вы можете запускать, просматривать и взаимодействовать с ними через Windows 10.

Microsoft заявляет, что "Позже в этом году пользователи Samsung Galaxy Note20 смогут оценить мощь и удобство одновременного запуска нескольких приложений, а мы продолжим сотрудничать с Samsung, чтобы перенести эти функцию на дополнительные устройства. Приложения будут запускаться в отдельных окнах, позволяя вам взаимодействовать с несколькими приложениями одновременно".

Тема меню "Пуск" лучше соответствует новым значкам Windows 10

http://personeltest.ru/aways/blogs.windows.com/windows-insider/2020/07/24/announcing-windows-10-insider-preview-build-19042-421-20h2/https://blogs.windows.com/windows-insider/2020/07/24/announcing-windows-10-insider-preview-build-19042-421-20h2/

В меню "Пуск" появились "плитки с поддержкой тем". Теперь фон плитки будет светлым или темным, в зависимости от используемой вами темы Windows 10 светлой или темной.

Раньше в меню "Пуск" использовался основной цвет, что означало, что в теме Windows 10 по умолчанию использовались различные синие значки на синем фоне. Переход на использование стандартных цветов темы означает, что новые значки приложений Windows 10 лучше выглядят в меню "Пуск".

Тем не менее, вы все равно можете получить те плитки, которые соответствуют вашей теме: Настройки Персонализация Цвета и поставьте галочку напротив "В меню "Пуск", на панели задач и в центре действий".

Кроме того, в меню "Пуск" появился новый значок для папок, который больше соответствует языку дизайна Microsoft.

Alt+Tab по умолчанию показывает вкладки браузера Edge

http://personeltest.ru/aways/www.howtogeek.com/684812/whats-new-in-windows-10s-20h2-update-arriving-fall-2020/https://www.howtogeek.com/684812/whats-new-in-windows-10s-20h2-update-arriving-fall-2020/

Windows 10 теперь показывает вкладки браузера при переключении через Alt+Tab, если у вас установлен новый Edge. Вместо того, чтобы просто отображать по одному эскизу Edge для каждого окна браузера, вы увидите несколько разных вкладок при переключении через Alt+Tab. Итак, если вы используете несколько веб-страниц одновременно, вы можете быстро находить их и переключаться между ними, просто нажимая Alt+Tab.

Чтобы настроить поведение при нажатии Alt+Tab, перейдите в Настройки Система Многозадачность и настройте Alt+Tab так, чтобы отображались последние три, пять вкладок Edge, или полностью отключите его и получите классическое поведение при использовании Alt+Tab.

Предположительно, другие браузеры, такие как Google Chrome и Mozilla Firefox, могут быть в будущем также переключение вкладки с помощью Alt+Tab. В конце концов, новый Edge делит кодовую базу Chromium с Google Chrome.

Закрепление сайтов на панели задач через Edge

http://personeltest.ru/aways/www.howtogeek.com/684812/whats-new-in-windows-10s-20h2-update-arriving-fall-2020/https://www.howtogeek.com/684812/whats-new-in-windows-10s-20h2-update-arriving-fall-2020/

Microsoft также улучшила работу закрепленных сайтов на панели задач. Когда вы закрепляете веб-сайт на панели задач с помощью Microsoft Edge, теперь вы можете щелкнуть (или навести указатель мыши) на этот значок на панели задач, чтобы увидеть все вкладки браузера для этого веб-сайта.

Если, допустим, вы закрепили Gmail на панели задач с помощью Edge, и у вас есть вкладки Gmail, открытые в нескольких окнах браузера, вы можете щелкнуть значок Gmail, чтобы найти их, даже если они скрыты в других окнах.

Больше никаких назойливых уведомлений от фокусировки внимания

Если вы уже использовали функцию "Фокусировка внимания" в Windows 10, которая, помимо прочего, автоматически скрывает уведомления, когда вы играете в игры и используете другие полноэкранные приложения, вы, вероятно, заметите, что она может быть очень назойливой.

Чтобы не беспокоить вас уведомлениями, "Фокусировка внимания" уведомляет вас всплывающими сообщениями о том, что она не будет показывать вам никаких уведомлений. А когда вы заканчиваете работать, все пропущенные уведомления отображаются скопом. Отныне Microsoft по умолчанию отключает все эти уведомления, хотя вы все равно можете снова включить их в настройках.

http://personeltest.ru/aways/www.neowin.net/news/windows-10-version-20h2-is-coming---heres-whats-you-need-to-knowhttps://www.neowin.net/news/windows-10-version-20h2-is-coming---heres-whats-you-need-to-know

Также уведомление Windows 10 теперь включает логотип приложения, чтобы вы могли легко понять, какое приложение их создало, и кнопку "x", чтобы вы могли быстро его закрыть.

Всегда использовать режим планшета по умолчанию

http://personeltest.ru/aways/www.howtogeek.com/684812/whats-new-in-windows-10s-20h2-update-arriving-fall-2020/https://www.howtogeek.com/684812/whats-new-in-windows-10s-20h2-update-arriving-fall-2020/

Раньше, когда вы отсоединяли клавиатуру на устройстве 2-в-1, выскакивало уведомление с вопросом "Хотите ли вы включить режим планшета?". Теперь Windows автоматически начнет использовать режим планшета без запроса или уведомления.

Вы можете настроить поведение, перейдя в Настройки Система Планшет.

Выбор частоты обновления экрана

http://personeltest.ru/aways/blogs.windows.com/windows-insider/2020/07/24/announcing-windows-10-insider-preview-build-19042-421-20h2/https://blogs.windows.com/windows-insider/2020/07/24/announcing-windows-10-insider-preview-build-19042-421-20h2/

Теперь в Настройках Windows 10 можно выбирать частоту обновления экрана вашего монитора. Настройки Дисплей Дополнительные параметры графики.

Настройки значков панели задач по умолчанию

http://personeltest.ru/aways/blogs.windows.com/windows-insider/2020/07/24/announcing-windows-10-insider-preview-build-19042-421-20h2/https://blogs.windows.com/windows-insider/2020/07/24/announcing-windows-10-insider-preview-build-19042-421-20h2/

Windows 10 настроит макет значков панели задач по умолчанию в зависимости от того, для чего вы используете свой компьютер. Например, если вы подключите телефон на Android во время настройки, вы увидите значок "Ваш телефон" на панели задач. Если у вас есть учетная запись Xbox Live и вы используете игровой ПК, то увидите значок Xbox на панели задач. Вы по-прежнему можете добавлять или удалять любые понравившиеся значки.

Незначительные изменения

  • Улучшения управления мобильными устройствами (MDM): для ИТ-специалистов, администрирующих несколько устройств, Microsoft расширяет политику управления мобильными устройствами новыми настройками "Локальные пользователи и группы", которые соответствуют возможностям, доступным для устройств, управляемыми через групповые политики.

  • При использовании VPN-соединения Windows 10 автоматически приостанавливает загрузку и скачивание.

  • Есть некоторые улучшения в списке всех установленных приложений. Значки приложений больше не вписываются в цветные квадраты, поэтому не только сами значки стали больше, но и список в целом выглядит намного чище.

Скачать KB562830 в формате .cab

KB562830 x64

KB562830 x86

.cab-файлы можно установить через cmd.exe

DISM.exe /Online /Add-Package /PackagePath:"путь до .cab" /NoRestart

или PowerShell

Add-WindowsPackage -Online -PackagePath "путь до .cab"

Известные проблемы Windows 10 20H2


P. S. Также, кому интересно, может тонко настроить Windows 10 с помощью моего скрипта на PowerShell. Подробнее в статье на Хабре.

Подробнее..

Перевод Какие изменения ждут разработчиков после выхода новой Windows 10X

31.03.2021 12:04:48 | Автор: admin
Windows 10X, Project Reunion, Windows Core OS Слышали о том, что Microsoft разрабатывала операционную систему нового поколения? Настало время узнать, что плохого и что хорошего это принесёт.


Изображение: Microsoft

Запуск Windows 10X важный шаг для Microsoft, он знаменует собой рождение нового поколения Windows. Об этом на конференции Ignite 2021 много говорил Пэнос Панай, директор по продуктам в Microsoft.

Не секрет, что в этом году Microsoft запускает новую операционную систему. Представители корпорации анонсировали Windows 10X ещё в 2019 году. Система построена на основе Windows Core OS. Это современная модульная программная платформа (именно она управляет гарнитурой дополненной реальности HoloLens 2). Изначально разработчики Windows 10X ориентировались на устройства с двумя экранами (например, складной планшет Surface Neo). Однако впоследствии они добавили оптимизацию графического интерфейса и для устройств с одним экраном.

По мнению авторитетного журналиста Зака Боудена, Windows 10X это ответ на запуск Google Chrome OS (легковесная ОС для сравнительно дешёвых устройств, ориентированная на облачные и веб-приложения). Точно известно, что новая ОС от Microsoft не будет обладать полным функционалом десктопной Windows 10, которую многие используют для работы или гейминга. Поэтому 10X вряд ли когда-нибудь заменит 10-ку. А дизайн Windows 10X претерпел ряд изменений и теперь больше напоминает Windows 8 ARM (Windows RT).

Новое поколение


По сравнению с предыдущими версиями ОС в архитектуре Windows 10X много изменений. Не всё уже существующее программное обеспечение, написанное для более ранних версий Windows, можно будет установить и запустить на ней. Изначально разработчики планировали реализовать нативную поддержку классических Win32-приложений наравне с UWP-приложениями. Но в процессе планы поменялись и задачи усложнились.

В первых релизах не будет нативной поддержки Win32-приложений. Разработчики отложили эту задачу в долгий ящик. Чтобы разрабатывать UWP-приложения под Windows 10X, нужно обращаться к WinRT API. Другой вариант разработка прогрессивных веб-приложений (Progressive Web App, PWA).

В итоге разработчики пришли к тому, что система должна работать примерно как Windows 10 в S-режиме. Только её GUI должен быть более современным и адаптивным. Windows 10X облачно-ориентированная модульная операционная система с повышенной скоростью запуска и обновления. Набор сервисов Microsoft 365 (например, OneDrive для хранения файлов) интегрирован непосредственно в ОС.

Первые устройства с Windows 10X на борту нацелены на образовательный и бизнес-сегмент, где веб-приложения, в отличие от нативных UWP, наиболее востребованы. Но даже при таком раскладе многие пользователи захотят скачивать UWP-приложения из Windows Store, устанавливать их и запускать на новой операционной системе.

Современная разработка под Windows с Project Reunion


Но каким же образом перенести старые приложения на новую ОС? Под Windows написано множество приложений разного типа, и UWP только один из них. А если приложение разработано с использованием Win32 API? Стоит отметить, что таких приложений по-прежнему немало, и они бывают востребованы.

image

Изображение: Microsoft

В Microsoft достаточно долго думали и наконец придумали единую платформу для разработки под Windows Project Reunion. Разработчики реализовали в ней специальную технологию, позволяющую объединить Win32 API и UWP API. Единая платформа позволяет конвертировать уже существующие классические Win32-приложения в UWP-приложения с минимальными усилиями.

С появлением платформы разработки Project Reunion появилась возможность отделить API старых десктопных приложений и UWP-приложений от кода самой ОС, объединив их в единый Reunion SDK. Это должно облегчить жизнь разработчикам.

Безусловно, Project Reunion не сможет полностью заменить Windows SDK. Проекту и без того предстоит долгий путь развития: портирование API, создание подобия полифиллов, функций-обёрток над комбинациями вызовов новых и старых API для достижения более высокого уровня абстракции.

Project Reunion не подразумевает формирования очередного монолитного SDK: он будет работать по принципу пакетов NuGet, которые могут обновляться без обновления всего SDK. С одной стороны, это позволит заменять полифилы нативными вызовами, с другой стороны, добавлять в SDK новые порции API по мере их готовности. На сегодняшний день можно посмотреть последнюю сборку (0.5), и составить об этом своё представление. Но пока это лишь небольшой набор API и UI-контролов, но уже сейчас можно собрать и упаковать своё приложение в MSIX-установщик.

Одним из главных компонентов Project Reunion стала библиотека Windows-контролов нового поколения WinUI 3.0. Её можно использовать для разработки и Win32-приложений, и UWP-приложений. Библиотека соответствует спецификациям нового дизайна для Windows 10X, а контролы способны адаптироваться и менять свои размеры в зависимости от устройства.

Объединение API для Win32 и UWP должно избавить разработчиков от многих проблем и рисков, связанных с портированием приложений (например, срыв всех возможных сроков из-за непредсказуемого поведения приложения, переписанного под новую платформу).

После выхода .NET 5 Microsoft ещё больше уходит от монолитного .NET Framework в сторону модульного легковесного .NET Core. Теперь .NET 5 заслуживает особого внимания, если вы хотите разрабатывать под Windows 10X. Более того, это даже выгодно, так как приложения, разработанные под Windows 10X запустятся и на других версиях Windows 10. По крайней мере, это обещают в Microsoft.

Напомним, что в Windows Store можно публиковать приложения для всех версий Windows 10. И, как всегда, поможет в этом Visual Studio, которая позволяет собирать, тестировать и паковать приложения под платформы Intel и ARM.

Использование виртуальных рабочих столов в облаке


Не все приложения смогут использовать преимущества Project Reunion или Windows Store. В ближайшие год-два они вряд ли дождуться появления тех API, которые нужны, на самом деле, уже сейчас. Корпоративным клиентам и образовательным учреждениям в этом плане будет легче. Они смогут настроить в облаке виртуальные рабочие столы Windows, чтобы их приложения стали доступны для пользователей. Для работы с GUI на устройствах с Windows 10X можно использовать UWP Remote Desktop. Код при этом будет крутиться на виртуальной машине Microsoft Azure.

Сейчас идёт активная работа над облачным сервисом Cloud PC, который обещает стать усовершенствованной версией Windows Virtual Desktop (по крайней мере, с точки зрения юзабилити). Новый сервис должен стать частью Microsoft 365 и предоставить учебным заведениям и бизнесу простой тариф с фиксированной оплатой за каждого пользователя размещённых в облаке приложений и рабочих столов.

Взглянув на бета-версии, гуляющие по сети, можно предположить, что пользовательский интерфейс сервиса спроектирован в стиле Windows 10. Вероятно, Microsoft запустит Cloud PC одновременно с одной из следующих версий Windows 10X. Скорее всего, тогда мы и посмотрим на него в деле: например, увидим как добавлять свои собственные приложения в образ Cloud PC.

Что делать сейчас


Уже ясно, что и без нативной поддержки классических Win32-приложений будет много интересных причин для перехода на Windows 10X. Максимально эффективно на этой системе будут работать нативные приложения UWP. Возможность запускать (плюс-минус) один и тот же код на ещё большем количестве разных устройств это очень серьёзная причина отказаться от legacy-кода и старых API в пользу современного и (по замыслу разработчиков проекта) более секурного кода.

Пока нельзя предсказать, куда в итоге выведёт орбитальная кривая развития Windows 10X и её спутников, но нам явно стоит включить в свои ближайшие планы знакомство с ней. Миграцию можно начинать уже после выхода первого релиза Project Reunion и появления обратной совместимости с Windows 10 1809. Если же какие-то из ваших пользователей откажутся от этого, то их проекты можно перекинуть на Cloud PC.

Наиболее конъюнктурный вариант пересаживаться сразу на UWP и .NET 5. Именно в эту сторону Microsoft планирует сдвинуть свой сегмент рынка. По мере появления новых API в Project Reunion, привлекательность портирования будет расти. Конечно, на миграцию, дописывание и переписывание может уйти много времени. Но, если вы хотите быть впереди планеты всей, то, начав в ближайшее время (пока ОС не получит широкого распространения), сможете стать одним из первопроходцев.



Наша компания предлагает серверы на Windows от 23 рублей в сутки!
Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!

Подробнее..

How to Make Your Windows 10 Laptop Work Better

17.03.2021 00:15:17 | Автор: admin
Read this article to find out how to get your laptop ready for all kinds of tasks without paying extra. And how to configure Windows 10 in the best way. We will explore how to maintain Windows 10, configure system security and laptop power settings, what software to install and how to connect peripherals. Here is the best all-round guide for you!

image



Introduction


In this guide, we will tell you about twelve easy methods to improve overall performance of your Windows 10 laptops, including steps for clearing junk files, optimizing the operating system and battery charge consumption, configuring security settings and installing additional apps.

How to free up disk space with the help of Storage settings in Windows 10


In Windows 10, there is a section entitled Storage that manages the local hard disk of your laptop and contains various storage settings. Use it for an easy way to remove unnecessary files from the system disk as well as other internal and external storage devices. Using the functionality of this section, you can quickly get rid of outdated setup and temporary files in order to free disk space fro more important data and improve disk efficiency.

In Windows 10, all main settings for the operating system, installed applications and services are concentrated into the unified and multifunctional application, Settings. There are several ways to access it.

Right-click on the Start button or press the keyboard shortcut Windows + X to open the context menu and select Settings.

image
image

Remove temporary files manually


To delete temporary files from your Windows 10 laptop, just do the following.

Open the Settings app in any way you prefer.

In the main page, click on the System tab.

image

In the left side of the Windows 10 settings panel, select Storage.

Now look to the right, find the section Storage sense and click on the link Free up space now (for Windows 10 with the official October 2018 Update or an earlier version).
image

For Windows 10 version 1903look to the right to find the section Windows 10 (C:) and click on Temporary files.

image

In the new page, the operating system will scan the available disk space, find and identify temporary files, arrange them by their properties and prepare them for being removed.

image

When the operations are accomplished, you will see the entire list of all discovered items. Check the files suggested for removal with the help of the description that includes the following lines:

  • Windows upgrade log files.
  • Thumbnails.
  • Temporary files.
  • Delivery optimization files.
  • Windows error reports generated by the operating system. Recycle Bin.
  • Temporary Internet files.
  • Windows Defender Antivirus.
  • DirectX shader cache.


Hint: Elements available for removal may differ depending on the version of the operating system and applications installed on a specific computer. Also, you may have noticed that we do not mention the Downloads folder. If you plan to select it, make sure it doesnt contain any mission-critical files before clearing its contents.

Select items for removal by checking the corresponding boxes and click Remove files.

image

The operating system will clear the selected elements immediately and free up disk space for storing more important user data.

Remove temporary files automatically


To configure automatic cleaning disk space from files you dont need any longer, do the following in the Storage section.

Open the Settings app in any way you like.

In the main page, click on the System tab again.

image

Select Storage on the left.

In the right panel, find the section Storage sense and drag the slider into On position to enable automatic disk space cleaning for the hard disk in your laptop.

image

After that, click Change how we free up space automatically below, or jump to the page where cleaning settings can be changed (just as before, we are describing the sequence of actions for Windows 10 with the October 2018 update or an earlier version).

image

For version 1903, go to the same Storage section and drag the slider for storage sense to the On position, and then use the link Configure Storage Sense or run it now to access a similar settings page.

image

In the section Storage Sense, use the dropdown menu Run Storage Sense and select one of the predefined time intervals for automatic start:

  • Every day.
  • Every week.
  • Every month.
  • During low free disk space.


image

In the next section Temporary files check the box for Delete temporary files that my apps arent using.

image

After that, set the time range for removal of deleted files from the Recycle Bin of your operating system. Use the dropdown menu Delete files in my recycle bin if they have been there for over and select the time interval, after which the bin is going to be emptied automatically.

image

After that, set the time interval in the dropdown menu Delete files in my Downloads folder if they have been there for over, to decide how long files downloaded from the Internet should be stored before they are removed automatically.

image

Advice: If you want to remove as may files as possible, choose the option 1 day. Bear in mind, though, that the Downloads folder may contain personal or important files, so it is recommended to back up all the files you need for the future before you proceed with automatic cleaning.

Now, find the section Locally available cloud content, open the dropdown menu Content will become online-only if not opened for more than and select the maximal number of days after which the files that have not been used for a long time will be removed from the hard disk of your laptop on condition, though, that their synchronized backup copy is saved to the cloud storage, OneDrive.

image

In the section Free up space now, check the box for Delete previous versions of Windows (if such line is displayed). With this option available, you may gain from 10 to 20 GB of additional free space.

Summing up, in the section Free up space now click on the button Clean now to start the process of removing the files according to the settings you have chosen in this page.

image

When all these actions are performed, some extra free space will appear in the hard disk of your laptop, or (depending on the settings) the automatic cleaning will run to optimize the storage device.

How to remove unnecessary apps in Windows 10


In order to remove unnecessary applications and games from Windows 10, here are the steps to take:

Open the Settings app in any way we have shown before.

In the main page, select the tab Apps.

image

In the left panel, look for Apps & features.

Click on it, and on the right, you will see all integrated and user-installed apps currently available for this computer. Scroll down or drag the slider down to navigate the list and find the application youd like to remove in order to gain more free space.

Advice: Click on the arrow Sort by to display the dropdown menu and choose the option Size, to see the applications that take up most space on the storage of your device.

image

Left-click on the selected application and then choose Uninstall.

The operating system will ask you to confirm your choice. Click the Uninstall button again in the system notification This app and its related info will be uninstalled.

image

The selected application will be removed and the disk space required for its installation and system files will be cleaned. Repeat the steps for other applications and games until the hard disk of your laptop is free from the programs you dont need any longer.

How to update your Windows 10 to the latest version available


Keeping Windows 10 up to date lets users access the latest system features and improvements introduced and tested by Microsoft. Besides, updating Windows 10regularly is the best way to make sure that your computer has the latest security updates capable of defending your files and programs from all kinds of network threats.

Update Windows 10 to the latest version with Windows Update service


In order to update Windows 10 to the latest version with Windows Update service, follow these steps.

Open the Settings app in any way you prefer.

Scroll down to reach the bottom of the list and select Update & Security.

image

In the left-side panel, click on Windows Update.

If the operating system doesnt show you an invitation to update it to the latest version automatically, click on the button Check for updates to find out if your machine is ready for the official update package.

image

When the check is complete, click on the link Download and install now, that you can find in the section Feature update to Windows 10. (The package containing new features and security improvements will only be available if your computing device is fully compatible with the suggested updates).

image

Then hit the button Restart now, to have the operating system prepare your laptop for installing system packages of the latest Windows 10 version.

Update Windows 10 to the latest version with Update Assistant


If your laptop doesnt shown any suggestions to update its operating system to the latest version, but you are confident that your device is absolutely compatible with it and ready for installation, you can have it done with Update Assistant.

In order to install the new version of Windows 10 with the help of Update Assistant, just do the following.

Open any web browser and visit the Microsoft official website offering support for all of their products.

In the section Windows Update now available click on Update now.

image

When the download is over, double-click on the executable file Windows10Upgrade to start the system update tool. When the User Account Control system asks you Allow this application to make changes to your device? click Yes, and the Update Assistant will start.

In the Update Assistant window, click Update now.

image

When the computer is checked for compatibility and installation of updates is possible, click Next.

image

The Update Assistant will start downloading the latest Windows 10 updates and get them ready.

image

When the process is over, click on Restart now.

image

When you complete all these steps, the Update Assistant for Windows 10 will update your laptop to the latest version while saving user files, and leaving applications and most settings unchanged.

image

Click Exit when everything is done, and you will see your laptop now having the latest version of the operating system.

How to shorten the list of apps that start with Windows 10


Many applications that people install on their laptops may change permissions and include themselves into the startup list so they can boot together with the operating system. Sometimes, they even configure additional background services to run at startup as well. Despite the fact that having third-party apps start with the operating system is sometimes an advantage, several such processes starting at the same time may have a serious impact on how quickly the laptop boots, reduce the time it can work on battery and affect overall system performance.

That is why if your Windows 10 starts with a bunch of other apps which you dont need right when your computer is ready for work, you can disable them, and here is how.

Open the Settings app using one of the methods we showed before.

In the main page, select the tab Apps.

image

In the left panel, jump to Startup.

When you look to the right, you will see the panel where you can decide which apps should start with the operating system. In the lines of corresponding applications which can affect system performance at startup, set the slider to the Off position, and the next time you boot your computer, these apps wont start in the background.

image

Advice: Open the dropdown menu Sort by with clicking on the downward arrow, and select the option Startup impact to arrange applications in a descending order by how they affect system performance when booting with Windows. Despite their attempts to reduce the number of such applications to a minimum, most users tend to never disable startup for Microsoft services like OneDrive and Windows Security Notification.

image

When certain applications are removed from the startup list, the operating system of your laptop should boot much faster.

How to back up the system drive of your Windows 10 laptop


Complete data backup for all information stored on your laptop is probably one of the best ways to secure user data against unexpected loss due to hardware failures, system errors, software compatibility issues, malware activities or theft attempts.

With all those advanced third-party tools for data backup, there is nothing to prevent you from using the good old utility to create a system image directly inside your Windows 10.

Important information: At the moment, users can still use system tools to create a system image. but it may be disabled in the future. With further official updates for Windows 10, Microsoft may decide to remove them from the list of integrated services.

As the tool for creating a system image was introduced back in earlier versions of Windows, it can be accessed directly from the Control Panel application. Initially, this app contains all main settings of the operating system, but beginning with Windows 8.1 developers started moving them to the new application, Settings, in order to display settings within a more advanced platform. Meanwhile, Control Panel only duplicates functions of the new app and contains specific tools, including Backup and Restore.

To create a complete backup of the data you store on your laptop, there is a sequence of steps to take.

Open the Control Panel app in any way you know. For example, click on the Start button which you can find in the lower left corner of the Taskbar to open the main Windows menu. Scroll down the list of available apps and services, find the section Windows System and left-click on it. Open the nested menu and select Control Panel from the list of suggested apps.

image

In the window All Control Panel Items find and select Backup and Restore (Windows 7).

image

In this page, hit the link Create a system image in the left-side panel.

image

In the new window, look under the heading Where do you want to save the backup?and check the option for On a hard disk to indicate where your backup will be stored.

With the nested menu, select the local disk where youd like to save your backup. Try to have that location on a physical disk different from the one you are backing things up from, because if the entire physical disk fails, you risk to lose all your backups. After that, click Next to continue.

image

By default, when you create a system image, the backup only includes the disks required to start your Windows 10. You can add any disks to be included into the backup by checking their boxes in the corresponding window.

In the section Confirm your backup settings check the settings you selected to create the system image, including location of the future backup and the disks selected for this process, and then hit Start backup set things going.

image

When it is over, the tool will create a full backup of your device including all data on the main hard disk and other disks which you may have selected for backup.

Also, the operating system will suggest creating a system repair disk for use in cases when the computer is unable to boot correctly. However, you can skip this part and use a bootable flash drive to access system restore options, if necessary.

How to protect files with OneDrive in Windows 10


OneDrive offers protection from ransomware, and stores selected files as permitted by the user to reduce the use of local storage to a minimum. It also features integrated functions that let you exchange various data, synchronize users settings in Windows 10, offers protection for BitLockerrecovery keys and many other useful options.

All data saved to the remote cloud service OneDrive will be available to you from anywhere in the world, including from another computer working under Windows 10 and macOS, as well as from mobile devices based on Android and iOS.

Back up contents of the folders Desktop, Documents and Pictures
In addition to its main functions, OneDrive cloud storage service also lets you backup files stored in such folders as Desktop, Documents and Pictures, without having to move their contents to the OneDrive folder.

To back up selected folders in Windows 10 to OneDrive storage, heres what you do.

On the Taskbar, look at the lower right corner and click on the cloud-shaped icon of Microsoft OneDrive shown near the notifications area.

In the vertical panel that appears, click More.

Select Settings from the context menu that appears.

image

In the window that opens, jump to the tab Auto Save.

In the section Protect your important foldersclick on the button Update folders.

image

The OneDrive window will show you folders Desktop, Documents and Pictures. Make sure that each of them is selected (it can be seen by the darker color of the folder and a tick mark). If necessary, select each folder.

When its done, click on Start protection.

image

When you complete these steps, documents and other files stored inside each of the said folders will be safely uploaded to OneDrive cloud service from your account.

How to protect your Windows 10 laptop from fraudsters and viruses


To ensure security of your laptop and all the information you have on it, you can always use third-party solutions from trusted developers and antivirus software that offer both free products for basic protection and advanced commercial solutions providing multi-level and varied protection security options within a single software complex. However, the latest operating system Windows 10 comes supplied with a powerful antivirus and firewall which are perfectly sufficient to protect your computing device and its files against various viruses, other malware and hacking attempts.

Run a full scan for viruses with Windows Defender


The built-in antivirus inside Windows 10 is enabled by default and ready to protect your laptop against almost every kind of malware, including viruses, spyware and ransomware. However, it is recommended to run a full scan from time to time and check your computer for hidden malware, especially if you notice a significant slowdown in how the laptop works and processes data.

To run such a scan meant to detect and remove malware from your computer, take the steps described below:

Open the Windows 10 antivirus in any way you prefer. For example, open the Settings app in any way you like, and scroll down until you see Update & Security.

image

In the left-side panel, select Windows Security, and then jump to Open Windows Security on the right.

image

Otherwise, open the main Windows menu by clicking on the Start button in the lower left corner of your desktop, on the Taskbar. Scroll down the list of installed apps and system services to find and select Windows Security.

image

In the main page of your security center, click on Virus & threat protection.

image

In the Current threats section click on the link Scan options.

image

The service will display available scan types. Check the option for Full scan to run a full-scale virus check.

Then hit the button Scan now to start detecting and isolating any malware that your computer may contain.

image

Windows Defender will scan the laptop and remove any elements that its internal security system believes to be malicious.

Enable Windows Firewall


As an additional security tool to improve computer protection, Windows 10 also includes Windows Firewall, whose main goal is to restrict unauthorized access of third parties to user networks; in other words, it filters network data streams to make sure no one gets to control your PC or modify or steal your data.

This built-in firewall should be enabled by default. If it isnt, you can always turn it on by taking these steps below:

Open the Windows Security service in any way you know (or any way we described in this article).

In the security overview page, select the tab Firewall & network protection.

image

In the related page, click on the button Restore firewalls to default.

image

After that, the firewall will operate in a full-featured mode and protect your device and data from all kinds of network threats.

If you are using a third-party antivirus and firewall, visit their developers website for more information on how to enable and manage these products.

See the full article with all additional video tutorials.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru