Wim hash management что это

Как открыть файлы WIM в Windows 10

Вы когда-нибудь сталкивались с WIM-файлом в Windows 10 и не знали, что с ним делать? Двойной щелчок по нему ничего не даёт. Расскажу, что такое файлы WIM и как открыть файл WIM в Windows 10.

Wim hash management что это. open wim files windows featured. Wim hash management что это фото. Wim hash management что это-open wim files windows featured. картинка Wim hash management что это. картинка open wim files windows featured

Что такое WIM?

WIM означает Windows Imaging Format. Это формат диска, используемый для кодирования образов. Впервые он был представлен в Windows Vista компанией Microsoft. Преимущество такого формата заключается в том, что он оптимизирован — сжатый файл занимает намного меньше места по сравнению с оригинальным образом. В таком файле есть шесть типов ресурсов WIM:

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

Как открыть файлы WIM в Windows 10

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

Wim hash management что это. wim file uncompressing a wim file 2. Wim hash management что это фото. Wim hash management что это-wim file uncompressing a wim file 2. картинка Wim hash management что это. картинка wim file uncompressing a wim file 2

Другой вариант программы для открытия WIM — 7-Zip. Программа совместима со всеми версиями Windows, начиная с Windows 2000, Windows Vista, Windows 10 и других.

С помощью PeaZip вы можете не только открывать WIM-файлы, но и изменять данные внутри. Это важно, если у вас возникли проблемы с установкой Windows 10 и вы сузили проблему до проблемы с WIM-файлом.

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

Заключение

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

Спасибо, что читаете! Подписывайтесь на мои каналы в Telegram, Яндекс.Мессенджере и Яндекс.Дзен. Только там последние обновления блога и новости мира информационных технологий.

Респект за пост! Спасибо за работу!

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

Заранее спасибо! Все собранные средства будут пущены на развитие сайта. Поддержка проекта является подарком владельцу сайта.

Источник

Утилиты для подготовки образа ОС к развертыванию

Если вы системный администратор, то перед вами обязательно встанет вопрос массового развертывания операционной системы на компьютеры пользователей. И каким бы способов вы его не развертывали — с USB, через WDS сервер с MDT, с помощью SCCM, — в любом случае вы будете использовать WIM файл с образом операционной системы.

Обзор способов разветывания ОС

Обратите внимание также, что файл ответов unattend.xml можно включить и в сам WIM образ, положив его в папку %WINDIR%\Panther\Unattend, но для MDT и SCCM все равно потребуется отдельный внешний файл для исполнения Task Sequence.

Как я уже указал, файлы unattend.xml или autounattend.xml можно редактировать вручную в редакторе, но правильнее и безопаснее делать это через SIM. Сам же файл образа операционной системы WIM создается и редактируется с помощью консольной утилиты DISM, имеющей множество ключей. Более того, этой же утилитой выполняется и развертывание (применение, apply) WIM файла на диск.

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

Захват образа и создание WIM

Для того, чтобы создать WIM файл, необходимо выполнить операции Sysprep and Capture. Для этого устанавливаете систему на компьютер, настраиваете как вам угодно, устанавливаете или удаляете приложения, ставите обновления. Также для успешного sysprep в Windows 10 необходимо сделать чистку системы и удалить некоторые запровиженные Modern App приложения от HP и Canon, иначе sysprep завалится. Это можно сделать командами Powershell:

Задача Sysprep заключается в том, что система очищается от пользовательских данные и профилей, удаляются SID системы и пользователя, для этого, чтобы этот имидж можно было использовать на других компьютерах. Чтобы запустить sysprep вручную, необходимо перейти в папку C:\Windows\System32\sysprep и запустить команду:

Sysprep.exe /generalize /shutdown /oobe

При этом система перейдет в OOBE режим (Out-Of-Box Experience, как будто она только устанавливается с нуля), а затем компьютер выключится. Больше про эту процедуру можно почитать в документации Microsoft.

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

Если выполнять захват вручную, то для этого нужно загрузиться в среду Windows PE с USB или по сети, или же подключить диск к другому компьютеру. В составе Windows PE уже должна быть утилита dism. Захват образа выполняется командой (при условии, что вы захватываете диск C:):

Dism /Capture-Image /ImageFile:D:\my-windows-partition.wim /CaptureDir:C:\ /Name:»My Windows partition»

Больше об этой процедуре почитайте в официальной документации.

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

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

Dism /apply-image /imagefile:N:\Images\my-windows-partition.wim /index:1 /ApplyDir:C:\

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

вам создаст BCD-загрузчик на диске с операционной системой. Помимо этого вам нужно будет сделать раздел Recovery. Для быстроты приведу пример типового bat-скрипта, который выполняет все эти операции из документации Microsoft.

На самом деле все это не цель нашей статьи, а скорее обзор, позволяющий понять, какими утилитами и в каком случае необходимо пользоваться. Ведь синтаксис всех команд хорошо расписан в документации. Кроме того, процедуру как sysprep /capture, так и развертывания образа на диск с предварительным форматированием проще выполнить через MDT, создав в нем соответствующие Task Sequence, однако MDT требует навыков, для разовых задач проще все сделать вручную.

Утилиты для работы с образами WIM

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

Это прекрасная утилита, написанная на языке скриптов AutoIt, экономит массу вашего времени, выполняя:

Текущая версия 2.2.0 совместима вплоть до Windows 10 build 1803. Все операции выполняются в один клик. Установка не требуется. Вариант использования: захват другого раздела на вашем диске или на подключенном диске, а также редактирование имеющегося wim файла. Работа в Windows PE не подразумевается.

Wim hash management что это. gimagex. Wim hash management что это фото. Wim hash management что это-gimagex. картинка Wim hash management что это. картинка gimagex

Wim hash management что это. gimagex2. Wim hash management что это фото. Wim hash management что это-gimagex2. картинка Wim hash management что это. картинка gimagex2

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

Wim hash management что это. dismgui. Wim hash management что это фото. Wim hash management что это-dismgui. картинка Wim hash management что это. картинка dismgui

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

Источник

WDS (Windows Deployment Services). Быстрое развертывание клиентских машин с сервера. Создание образа развертывания WIM

Начало и конец

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

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

Для тех кто не знает: WDS (центр развертывания) это специальное средство, которое есть в серверной ОС Microsoft, с помощью него можно установить систему на большое количество компьютер одновременно, с помощью сети, используя PXE.
Также тут будет информация о препарировании wim, и немножко о DHCP.
Итак начнем под катом.

Часть 1. Установка

Эту часть можно пропустить тем, кто хоть раз делал установку служб\компонентов в Server 2012R2. Из этого блока нужен только пункт 1.3.

Идеалом для WDS является, если DHCP сервером является эта же машина. Тогда он может корректно передать информацию о PXE Boot.

1.1 Включение WDS

Установка WDS в картинках. Все просто.

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader
Раз

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader
Два

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader
Три

Дальше начинается то, что потребует чуть больше, чем просто Nextnextnext)/

1.2 Включение роли

После установки выбираем в списке консоли наш сервер WDS.

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

Так как по умолчанию предлагается загрузочные и установочные образы хранить на системном диске (что не рекомендуется), то создадим на разделе E: папку RemoteInstall, которая и была указана мастеру настройки сервера.

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader
Тут на ваш выбор

1.3 Образы

На установочном диске с любой системой, начиная с Vista, есть папка source, там лежат два файла boot.wim и install.wim
Boot.wim — это образ для запуска, предзагрузочный.
install.wim — это образ самой системы.

Если boot.wim ещё надо будет подготовить, для работы, то install.wim сразу готов для установки.

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

В диспетчере сервера boot — образы загрузки, install — образы установки.

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

Часть 2. Препарирование Boot.wim

Очень часто возникает одна большая пролема:
Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

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

2.1 Утилиты

По умолчанию в 2012 сервере, после установки WDS, утилита dism может работать с образами wim в полной мере.
Для 2008/R2 или 7 вам понадобится Windows Automated Installation Kit (WAIK) и у вас появится инструмент dism.

Создаем структуру папок: c:\drivers\mount — папка монтирования WIM образа; c:\drivers\lan_drivers — папка с драйверами для сетевой карты.
Копируем boot.wim от ОС в папку c:\drivers
Предостерегаю! Чем больше драйверов, тем больше универсальности, но и размер образа сильно увеличивается, это необходимо учитывать. Образ целиком заливается в RAM.

2.2 Препарирование

Для 2008\7 запускаем Deployment Tools Command Prompt из меню пуск с правами администратора.
Для 2012 — запускаем командную строку с правами администратора.

Смотрим содержимое загрузочного образа boot.wim:

dism /get-wiminfo /wimfile:c:\drivers\boot.wim

По идее там должно быть так:

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

Как видно из скриншота boot.wim содержит два образа — Windows PE (Индекс 1) и Windows Setup (Индекс 2). Драйвера для сетевой карты надо добавлять в Windows Setup, поэтому будем работать с образом 2 (Индекс 2).

Но не так всё просто. Компания добра Microsoft заблокировала для изменения этот образ, для его редактирования его надо «перезалить».
Выполняем:

Dism /Export-Image /SourceImageFile:c:\drivers\boot.wim /SourceIndex:1 /DestinationImageFile:c:\drivers\boot1.wim
Dism /Export-Image /SourceImageFile:c:\drivers\boot.wim /SourceIndex:2 /DestinationImageFile:c:\drivers\boot1.wim

dism /get-wiminfo /wimfile:c:\drivers\boot.wim

Должна выдать те же два раздела, с index 1 & 2.

2.3 Добавление драйверов

dism /Mount-Wim /WimFile:c:\drivers\boot.wim /index:2 /MountDir:c:\drivers\mount

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

dism /image:c:\drivers\mount /add-driver /driver:«C:\drivers\lan_drivers\E1C5232.INF»

dism /image:c:\drivers\mount /add-driver /driver:«C:\drivers\lan_drivers» /recurse /forceunsigned

dism /unmount-wim /mountdir:c:\drivers\mount /commit

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

2.4 Образ в хранилище

Теперь перекопируем его в любую директорию, где у вас будут хранится образы.
И установим на сервер WDS.

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

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

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

2.5 Безопастность

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

Security — Чтобы добавить разрешения для учетной записи пользователя на группу образов, щелкните правой кнопкой мыши группу оразов и нажмите security. Добавьте учетную запись пользователя из AD и настройте полный контроль. Если вы используете учетную запись администратора домена во время установки WDS, то это можно не делать.

Часть 3. Образ системы. Кастомный вариант

Для начала устанавливаем ОС. Ставим всё что надо.
Далее препарируем её. По ссылке создание настроенного образа операционной системы

Хорошая статья по IMAGEX + WINPE созданию образа там же есть ссылки вначале статьи для создания WIN7 & WIN8. Либо находим на просторах интернета WindowsPE, по вашему желанию)
Для дальшейшего нам нужен образ WinPe с утилитой ImageX правильной битности.

3.1 Создание образа и его копирование на сетевой ресурс с помощью Windows PE и программы ImageX

NET USE y: \\nmp\oem\ /USER:AD\ *
И ввести свой пароль.
! надо понять какой диск является каким, для этого с помощью команды DIR C: (D,E,F & etc), перебираем диски, если их несколько
Далее необходимо записать образ основной установки с помощью программы ImageX, расположенной в среде Windows PE, или на другом диске, на сетевой ресурс. Для этого необходимо ввести следующую команду:

Где e:\ — RAM Disk, D: — OS Disc, Y: — сетевой диск. После этого пойдёт процесс создания и копирования образа на указанный сетевой ресурс.
По завершении создания образа и его копирования на сетевой ресурс необходимо ввести команду exit и приложение закроется и компьютер начнёт перегружаться.

3.1.1 Ручное развертывание

Битность системы должна быть той же, что и у системы, которую мы распаковываем.
После создания образа, можно развернуть его на новое оборудование с помощью программы ImageX и среды Windows PE.
Форматируем диск, для распаковки на него WMI.
Для этого надо ввести следующие команды:

diskpart
select disk 0
clean
create partition primary size=100
select partition 1
format fs=ntfs label=«system»
assign letter=c
active
create partition primary
select partition 2
format fs=ntfs QUICK
assign letter=e
exit

Форматирование следует проводить ТОЛЬКО в среде Windows PE. Если отформатировать жёсткий диск на другом компьютере средствами Windows, а затем вставить этот жёсткий диск в конечный компьютер, то образ с вероятностью 80% НЕ РАЗВЕРНЁТСЯ.

Подключаемся к сетевому ресурсу для развёртывания образа, введя следующую команду:

NET USE y: \\nmp\oem\ /USER:AD\ *
Вводим пароль.
! надо понять какой диск является каким, для этого с помощью команды DIR C: (D,E,F & etc), перебираем диски, если их несколько
Разворачиваем образ на жесткий диск с помощью программы ImageX, с сетевого ресурса, введя следующую команду:

После этого пойдёт процесс развёртывания образа на указанный жёсткий диск с сетевого ресурса.

Далее, с помощью средства BCDboot необходимо инициализировать хранилище данных конфигурации загрузки (BCD) и скопировать файлы среды загрузки в системный раздел, введя в командной строке следующую команду:

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

3.2 Сервер

Настроим сервер, для работы с образами.

Добавим наш готовый образ в «Образы установки»:

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

Как в случае с загрузочным образом указываем мастеру путь к файлу wim, который мы создали:

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

В оригинальном файле install.wim может содержаться несколько редакций:

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

Но в созданном должна быть только одна.

Часть 4. Великий и ужасный DHCP

1) WDS и DHCP установлены на одном сервере.

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

WDS и DHCP не могут занимать порт UDP 67 одновременно. Запретив службе WDS прослушивать порт UDP 67, можно предоставить порт для DHCP-трафика и присвоить DHCP-параметру 60 (параметр области или сервера) значение PXEClient, устранив конфликт.
Если служба WDS устанавливается на DHCP-сервере, в ходе настройки появляется страница DHCP Option 60. Установите флажки Do not listen on port 67 и Configure DHCP option 60 to PXEClient. В сообщении, получаемом клиентом от сервера DHCP, содержится IP-адрес, маска подсети и параметр 60.
В результате клиенту становится ясно, что сервер DHCP является одновременно и сервером WDS. Если позднее добавить DHCP к серверу WDS, можно настроить этот параметр, щелкнув правой кнопкой мыши на имени сервера в оснастке WDS и выбрав пункт Properties. На вкладке DHCP имеются аналогичные флажки.

2) WDS и DHCP находятся на различных серверах, в одной подсети с клиентами.

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

Дополнительной настройки не требуется, так как WDS и DHCP расположены на разных серверах. Обе службы могут прослушивать порт UDP 67, а клиенты находятся в одной подсети с серверами WDS и DHCP, поэтому широковещательный трафик доступен для всех.

3) WDS и DHCP устанавливаются на различных серверах, в разных подсетях.

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

Службы WDS и DHCP, установленные на разных серверах, не мешают друг другу прослушивать порт UDP 67.

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

Чтобы помочь клиенту WDS найти сервер WDS мы должны настроить DHCP опцию 66 и DHCP опцию 67.
Настройка параметров DHCP в сети IPv4 выполняется из оснастки DHCP, доступной из раздела Administrative Tools меню Start.

В оснастке DHCP разверните IPv4, а затем щелкните правой кнопкой мыши Server Options (или параметры области) и выберите пункт Configure Options. Прокрутите список до элемента 066 Boot Server Host Name, установите флажок и введите имя узла сервера WDS в текстовом поле (можно использовать имя, но желательно IP).

Затем установите флажок 067 Bootfile Name. В текстовом поле введите путь и имя файла Preboot Execution Environment (PXE) для загрузки на клиенте. Текстовое значение для параметра 67:

boot\x86\wdsnbp.com — 32 bit
ИЛИ
boot\x64\wdsnbp.com — 64 bit

Также есть рекомендации с иностранных сайтов:

Configure DHCP option 67 with the right boot image file.

For 32-bits systems \boot\x86\wdsnbp.com
For 64-bits systems \boot\x64\wdsnbp.com

4.1 CNP

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

Client Naming Policy — в настройках сервера WDS, выберите AD DS. В Client Naming Policy указать формат, на основании которого компьютерам будет задаваться имя.
Шаблон по умолчанию именования %61Username% #, это означает, WDS создаст имя компьютера, используя имя пользователя, вошедшего на удаленный при выполнении процесса установки и # это число 1,2,3… до 999 будет добавлен после имени пользователя.

4.2 Cisco DHCP MODE

BU# ip dhcp pool DATA
BU# option 66 ascii «1.2.3.4»
BU# option 67 ascii «bootfile.pxe»

Часть 5. немного послесловия

Собственно всё. Это небольшая статья, и кажется она закончена.
Кто-бы что не говорил, но для небольших сеток это очень нужная вещь.
Для тех, кто захочет расширить функционал, есть просто отличная статья на Geektimes: «Добавляем WDS универсальности».

На этому спешу откланяться, спасибо всем кто заинтересовался этой статьёй.

Если есть оЧепятки в тексте пиши в личных сообщениях, флудить и троллить не спортивно! Если можете что-то важное добавить, добавлю в статью.

Существует MDT (Microsoft Delpoyment Toolkit).
С помощью него можно сразу добавить ключ в образ и установить продукты с quiet установкой.
Также настроить имя пользователя администратора и его пароль.
Требует отдельного компьютера и установленных зависимостей.

darthslider
В первую очередь MDT — это поддежка Task Seqence, то есть это любые скрипты и настройки на любом этапе установки.
Так же это удобный редактор unattend.xml
Ну и в придачу установка ПО, постнастройка, ввод в домен и тд, а так же поддержка сценариев обновления ОС (захват по и настроек, установка новой ос, восстановление), миграции пользователя на новый пк (схоже с предыдущим сценарием). Но последние 2 пунтка это довольно сильное шаманство.

(О настройке и поднятии видео ТУТ.)

Источник

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

Wim hash management что это. fc25206988fd80b89ff3e367b95ae778. Wim hash management что это фото. Wim hash management что это-fc25206988fd80b89ff3e367b95ae778. картинка Wim hash management что это. картинка fc25206988fd80b89ff3e367b95ae778

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

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

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

Wim hash management что это. 22634a85b31270399317cdf22eaaa094. Wim hash management что это фото. Wim hash management что это-22634a85b31270399317cdf22eaaa094. картинка Wim hash management что это. картинка 22634a85b31270399317cdf22eaaa094Отдел IT

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

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

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

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

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

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

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loaderМой лик, когда ожидаю приглашения

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

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

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loaderМой лик, когда получил приглашение

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

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

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

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

Wim hash management что это. 4e8e0397429bc709c4e90ce2d1f98457. Wim hash management что это фото. Wim hash management что это-4e8e0397429bc709c4e90ce2d1f98457. картинка Wim hash management что это. картинка 4e8e0397429bc709c4e90ce2d1f98457Иконка Sophia Script

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

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

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loaderSophia 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 что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loaderВосстановление удаленных UWP-приложений для текущего пользователя

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

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

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

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

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

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

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

Wim hash management что это. 74258312de2f67b76867d46c87bbef58. Wim hash management что это фото. Wim hash management что это-74258312de2f67b76867d46c87bbef58. картинка Wim hash management что это. картинка 74258312de2f67b76867d46c87bbef58Было Wim hash management что это. 626f96cb4c08303ceb0bc78f41668dd6. Wim hash management что это фото. Wim hash management что это-626f96cb4c08303ceb0bc78f41668dd6. картинка Wim hash management что это. картинка 626f96cb4c08303ceb0bc78f41668dd6Стало Wim hash management что это. 149377599d71acd5fec64cf4c32b9663. Wim hash management что это фото. Wim hash management что это-149377599d71acd5fec64cf4c32b9663. картинка Wim hash management что это. картинка 149377599d71acd5fec64cf4c32b9663Наши лики, когда, наконец, всё заработало

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

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

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

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

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

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

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

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

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

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

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

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

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

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

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

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

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

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

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

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

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

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

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

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

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

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loaderКод целиком:

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

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

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

Wim hash management что это. c547fa7c60154a6405d8f637a9128e2e. Wim hash management что это фото. Wim hash management что это-c547fa7c60154a6405d8f637a9128e2e. картинка Wim hash management что это. картинка c547fa7c60154a6405d8f637a9128e2e

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 что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

Как видно на скриншоте, пользователю предоставляются на выбор 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 что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

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

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

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

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

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

Wim hash management что это. image loader. Wim hash management что это фото. Wim hash management что это-image loader. картинка Wim hash management что это. картинка image loader

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

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

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

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

Итоги

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

Wim hash management что это. a95f798f363cb176f0fa848c743edf97. Wim hash management что это фото. Wim hash management что это-a95f798f363cb176f0fa848c743edf97. картинка Wim hash management что это. картинка a95f798f363cb176f0fa848c743edf97

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

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

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

Wim hash management что это. b2ac70848031ec48a4b62f40a6e315d5. Wim hash management что это фото. Wim hash management что это-b2ac70848031ec48a4b62f40a6e315d5. картинка Wim hash management что это. картинка b2ac70848031ec48a4b62f40a6e315d5

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

Источник

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

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