wim hash management что это

Загрузка Windows Recovery Environment (или любого WIM-образа) с USB flash

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

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

Что понадобится

1) сам образ winre.wim, получить который можно двумя способами:

— из установленной системы, в Win7 он находится в C:\Recovery\recovery-guid (где папка recovery-guid — это набор букв/цифр); в Win8 и выше — в С:\Recovery\WindowsRE.

Или же папки С:\Recovery может не существовать, тогда она находится на специальном загрузочном разделе Windows «Зарезервировано системой», который имеет размер 100-500 Мб и расположен на диске до основного системного раздела С:\.
Тогда этому мелкому разделу нужно присвоить букву в Управлении дисками.

Более сложный случай: папка \Recovery находится на скрытом OEM разделе восстановления, которому уже просто так не присвоить букву, перед этим нужно сменить его тип.
Делается это при помощи Командной строки, запущенной от имени Администратора, и DiskPart:

( disk 0 и partition 2 указаны для примера, см. реальные номера нужного диска/раздела в выводе команд list ; при помощи detail посмотрите и запомните ID раздела до изменения, чтобы вернуть его назад)

ВАЖНО: winre.wim, скопированный из раздела восстановления, созданного производителем компьютера или ноутбука, может отличаться от стандартного и не иметь нужных функций!
Поэтому лучше взять его

— с установочного DVD из образа \sources\install.wim — внутри образа файл находится по пути \System32\Recovery.

WIM-образы можно смонтировать в систему при помощи DISM:

или открыть последней версией 7-Zip.

2) вспомогательный файл boot.sdi — тоже находится внутри winre.wim или install.wim по пути \Windows\Boot\DVD\PCAT, или на DVD в \boot.

3) программа bootsect.exe для того, чтобы сделать флешку загрузочной — искать также в WIM в \Windows\System32, или на DVD в \boot.

Форматирование флешки

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

Создание загрузочного сектора

(где E: — буква, под которой смонтирована флешка)

Установка загрузчика bootmgr

Опять же, есть 2 способа: с использованием установочного DVD и без него.
1) Сначала рассмотрим способ только при помощи имеющейся системы:

Необходимо помнить про разрядность версии ОС!
Если вы создаёте флешку с x32-версией WinRE для лечения x32-систем, то и исходной системой, откуда копируется загрузчик при помощи bcdboot.exe, должна быть именно x32. Про x64, соответственно, тоже самое.
Но плюс в том, что при данном способе вы можете иметь на одной флешке хоть 10 версий WinRE — от всех систем (Windows Vista/7/8/8.1/10 + аналогичные серверные версии) и любой разрядности. Одновременно. Без регистрации и СМС. 🙂

2) Если же использовать DVD, то необходимо скопировать следующие папки и файлы (и конечно же при ручном копировании версия Windows не важна!):

(это — минимальный набор необходимых файлов; их можно вручную скопировать и из системы, с диска C: — БЕЗ использования bcdboot.exe, которая скопирует больше файлов)

Отступление про разные версии Windows
От того, какой вы возьмёте файл bootmgr, будет зависеть, каким будет загрузчик: текстовым, с управлением клавиатурой, либо графическим, с поддержкой мыши.
Win7 использует текстовый режим, а Win8/8.1/10 — графический.
Текстовый вариант, естественно, загружается быстрее.
3 файла шрифта выше — это минимальный набор для русского языка для bootmgr из Windows 7, к тому же, эти файлы опциональны — без них шрифт будет более простым.
Более новые версии Windows используют больше файлов шрифтов.

Я рекомендую использовать bootmgr из Windows 7, а образ winre.wim из Windows 10, т.к. среда восстановления теоретически совершенствуется от версии к версии.
Откуда брать файлы: из установленной системы или с DVD — значения не имеет.

Создание загрузочной записи

(где — GUID новой загрузочной записи, см. в выводе первой команды)

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

Полный листинг рабочей загрузочной записи, взятой с DVD Windows 7 x32:

Копирование WIM-образа

Скопируйте файлы winre.wim и boot.sdi в папку \boot на флешке.
Папка может быть любой (тогда скорректируйте пути в командах bcdedit выше), но оба файла должны быть в одной и той же папке.
Для загрузки нескольких образов достаточно одного файла boot.sdi.

Загрузка с флешки

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

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

UPD 02.02.2016, 15:40:
Дополнения про извлечение образов из скрытых разделов и про монтирование их в систему при помощи DISM.

Источник

Автоматизированная установка ОС на примере Windows Embedded x64

Пошаговая инструкция с примерами

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что этоНаверняка каждый может вручную установить и настроить операционную систему Windows. Но для случая, когда в производственных целях эту задачу следует выполнить десятки или сотни раз, возникает необходимость автоматизированной установки.

В этой статье описываются основные шаги и советы как создать «тихую», автоматизированную установку операционной системы, настроить ее и оттестировать результат. Безусловно, в сети можно найти достаточно большое количество статей и советов про отдельные фазы такой задачи, но общие инструкции и ответы на вопросы: С чего начать? Что необходимо подготовить? Какие основные шаги процесса? – к сожалению, редкость.

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

Windows Embedded Standard 7×64 выбрана в качестве операционной системы для примеров.

Требования к рабочей машине:

Должны быть установлены:
Должны быть доступны:
Основные инструменты:
Структура папок в рабочей среде:

Создайте рабочую папку. Например, папку с именем “Work”.
Скопируйте содержание оригинального ISO-образа с установкой Windows в свою рабочую директорию. В результате должно получиться следующее:

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что этоwim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

Обратите внимание на две подпапки в Distribution Share (DS) folder: “$OEM$ Folders” и “Out-Of-Box Drivers”.

Создайте папку “Work\DS\Out-of-Box Drivers\”. Тут будут храниться необходимые для целевого устройства драйвера.

Создайте структуру папок “Work\DS\$OEM$ Folders\(CustomFolder)\$OEM$\$$”. Тут будут храниться дополнительные файлы, приложения, реестровые файлы, конфигурации и скрипты.

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

1. Создание файла ответов AutoUnattend.xml.

Чтобы сделать установку полностью автоматизированной, нужно как минимум дать ответы на все вопросы мастера установки Windows. Файл ответов в XML-формате содержит все необходимые для этого поля.

Image Configuration Editor (ICE) может быть использован для создания и редактирования файла ответов автоматизированной установки. Конечно, для этого можно использовать любой текстовый редактор, но уже без удобств и графического интерфейса ориентированного на данную задачу ICE.

ICE позволяет создавать файл ответов, добавлять компоненты (features), драйвера и все необходимые опции, позволяющие сделать установку полностью автоматизированной.

Интуитивный пользовательский интерфейс и расширенная система поиска делают ICE приоритетным при выборе инструмента создания и редактирования файла ответа.

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

Для начала работы с ICE:
Features

Windows Features (в данном тексте здесь и дальше в качестве русского эквивалента используется слово «компонент») добавляются в соответствии с требованиями целевого устройства. ICE может автоматически добавить необходимые и опциональные компоненты после того, как вы добавите требуемый минимум.

Если Ваше устройство ограничено в размере дискового пространства – обратите внимание на показатель Estimated Footprint: это предположительный размер, который займет Windows на диске после установки.

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

Options

У всех компонентов есть одно или несколько свойств. Как минимум, необходимо определить ответы на вопросы стандартной установки: язык установки по умолчанию, подтверждение Microsoft Software License Terms, ключ продукта, на какой диск и в какой раздел будет установлена Windows, локальные установки.

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

Настройка дисков

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

Чтобы создать новый раздел на диске для опции DiskConfiguration/Disk/CreatePartitions в контекстном меню выберите действие «Insert New CreatePartition«.

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

Опция ImageInstall позволяет выбрать на какой из разделов будет устанавливаться операционная система.

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

Проверка и сохранение файла ответов

Чтобы проверить файл ответов на ошибки используйте F5. Предупреждения и ошибки будут отображены в панели сообщений.

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

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

Файл ответов должен быть назван Autounattend.xml и сохранен в корень рабочей директории.

2. Добавление драйверов в процесс автоматической установки ОС.

3. Добавление дополнительных приложений и системных настроек с помощью файла ответов, скриптов и команд.

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

Для «тихой» установки приложений во время установки ОС используйте соответствующие ключи: /s, /silent или /r с setup.iss файлом для InstallShield установки, /qn для MSI-пакетов, /verysilent /SP — для InnoSetup, /s для Wiseinstaller и т.д. Используйте help и опцию /? чтобы ознакомиться с опциями командной строки установки приложения.

4. Создание тестового образа.

Тестовый образ может быть создан как ISO-образ или как загрузочный USB.

Пример создания ISO-образа, используя инструмент oscdimg (%ProgramFiles%\Windows Embedded Standard 7\Tools\AMD64\oscdimg.exe) для случая, если папка Work лежит в корне диска С:

5. Снятие образа с тестовой машины и развертывание на целевых устройствах.

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

Sysprep подготавливает установку Microsoft Windows к дублированию, аудиту и доставке клиенту.
Sysprep удаляет данные конкретной системы из Windows, такие как ComputerSID. Поэтому подготовка с помощью SYSPREP – важный шаг в создании образа.

Создать образ можно используя WindowsPE с инструментами ImageX или SymantecGhost.
Используя WindowsPE Tools Command Prompt можно создать загрузочный WinPE образ с автоматизированным созданием wim-файла.
Используя Symantec Ghost\Ghost Boot Wizard можно создать загрузочный Ghost образ с автоматизированным созданием ghost-файла.

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

Образ, полученный в результате, может быть использован в lite-touch и zero-touch стратегии развертывания.

Источник

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

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

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

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что этоОтдел IT

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

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

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

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

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

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что этоМой лик, когда ожидаю приглашения

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

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что этоМой лик, когда получил приглашение

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

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что этоИконка Sophia Script

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

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что этоSophia Script Wrapper

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

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

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

Версия

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

Билд

Архитектура

Издания

October 2020 Update

LTSC Enterprise 2019

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

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

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

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

На выходе вы получите что-то вроде этого (простыню кода прячу под спойлер)

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

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

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

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

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

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

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

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что этоВосстановление удаленных UWP-приложений для текущего пользователя

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

И вы увидите что-то вроде:

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

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

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

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

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что этоБыло wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что этоСтало wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что этоНаши лики, когда, наконец, всё заработало

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

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

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

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

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

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

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

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

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

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

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

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

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

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

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

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

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

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

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

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что этоКод целиком:

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

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

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

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

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

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

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

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

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

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

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

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

только MainWindowHandle окна может помочь

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

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

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

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

Всё вместе выглядит так:

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

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

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

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

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

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

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

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

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

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

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

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

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

Итоги

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

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

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

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

wim hash management что это. Смотреть фото wim hash management что это. Смотреть картинку wim hash management что это. Картинка про wim hash management что это. Фото wim hash management что это

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *