[Цитировать]

    conty9
  • 100
  • Стаж: 2 года 11 месяцев
  • Сообщений: 915
  • Репутация:69

    [+] [-]
BCDimpex /BCD Import-Export/ - утилита для слияния двух BCD меню. Утилита может использоваться для:
1. Быстрой правки и подгонки пунктов меню визуально по ширине (если в системе есть шрифт Courier, ширина всех символов одинаковая).
2. Переноса (или копирования) пунктов меню из основного меню в меню инструментов (и обратно).
3. "Высушивания" BCD меню (т.е., удаления мусора от прежних правок).
4. "Высушивания" кустов реестра ядра WinPE или ОС (неактивной). Производится удаление мусора от прежних правок и дефрагментация.
5. Экспортирования выбранных записей одного меню в другое (слияние двух меню).

Назначение кнопок:
1. Кнопка для выбора меню донора (т.е., меню, пункты из которого по выбору будут импортированы в новое меню). Также можно открыть меню, перетащив его из окна проводника на окно пути (п.2.).
2. Окно отображения пути к меню донора.
3. Открыть проводник, открываемая папка определяется п.9.
4. Чекбокс для выбора запуска 'BCD Edit' в Easy-режиме. Если не отмечено, запускается в режиме Professional.
5. Кнопка запуска BCD Edit (из состава BootICE), зависит от п.9.
Примечание: Возможен множественный запуск BCD Edit/BCDtool. Редактирование меню производится для его копии в папке %Temp%. При этом результат работы последней открытой копии заменит исходный файл.
6. Кнопка запуска пересборки донорского меню (открытого в п.1.). Неактивна, если "донор" не выбран. Результатом работы будет файл BCD.rebuild в папке программы.
7. Кнопка для выбора меню реципиента (т.е., меню, пункты из которого будут использованы полностью в новом меню). Также можно открыть меню, перетащив его из окна проводника на окно пути (п.8.).
8. Окно отображения пути к меню реципиента.
9. Радиокнопки, определяющие поведение 3, 5, 10, 11. Т.е., если выбрана верхняя левая - все действия будут производится с меню донора (п.3 - открыть папку донора, п.5 - редактировать меню при помощи BCD Edit, п.10 - просмотр меню во вьювере, п.11 - редактировать меню в BCDtool). После отработки операций по перестройке или слиянию меню (6, 12) автоматически выбирается результат работы.
Примечание: Если соответствующее меню недоступно (не выбран донор/реципиент, или отсутствуют выходные файлы BCD.rebuild, BCD.impex), кнопки 5, 10, 11 блокируются. А 3 в такой ситуации открывает папку утилиты.
10. Кнопка просмотра выбранного BCD меню, определяется п.9. В окне просмотра доступна информация о содержании меню (без возможности редактирования). Если отмечен чекбокс "Autoupdate", то при выполнении действий (смена цели в п.9 или запуск обработки по 6/12) окно будет обновлено - открыт просмотр нового файла.
Примечание: Максимальное число отображаемых записей в окне просмотра зависит от разрешения экрана и меняется от 34 для разрешения 1024х768 до 51 - для 1920х1080.
11. Кнопка запуска BCDtool, определяется п.9.
12. Кнопка запуска слияния меню донора и реципиента. Результатом работы будет файл BCD.impex в папке программы.
13. Указание на пункты в главном меню донора (после загрузки меню автоматически отмечены все чекбоксы слева).
14. "Линейка" для подгонки меню по ширине (20--30--40--50--60).
15. Индикация количества отображаемых пунктов в меню донора и максимального числа отображаемых пунктов.
Примечание: Максимальное число зависит от разрешения экрана и меняется от 30 для разрешения 1024х768 до 47 - для 1920х1080.
16. Чекбоксы выбора для главного меню.
Примечание: Пункты из основного меню белого цвета, из меню инструментов - серого ("видимая" длина - 69 и 67 символов соответственно).
17. Дефолтный пункт запуска меню донора (зеленоватого оттенка).
18. Чекбоксы выбора меню инструментов и само меню инструментов донора (серого цвета).
Примечание: Чекбоксы выбора пунктов меню (16, 18) определяют, что и куда будет помещено при пересборке или слиянии. Неотмеченные пункты будут удалены.
19. Чекбокс для изменения идентичных идентификаторов Change identical IDs в меню донора. Дефолтное значение - включено.
Примечание: Если отмечено, тогда производится "умная" замена всех "Device options" -> {ramdiskoptions}. Также производится замена идентичных ID донора и реципиента - например, ID {24809d60-d80b-11e2-98a1-50e54938a1e5} будет заменен на {24809d60-XXXX-XXXX-XXXX-50e54938a1e5}, где XXXX-XXXX-XXXX - сгенерированные числа (полноценную генерацию 16-ти значных кодов лень было делать). Такой вариант замены имеет свои плюсы: первый блок дублирующихся идентификаторов останется тем же - поэтому впоследствии можно легко найти изначально идентичные по ID записи.
20. Чекбокс для добавления раздела {globalsettings} из меню донора в результат слияния. Дефолтное значение - включено.
21. Чекбокс для добавления настроек {ramdiskoptions} из меню донора в результат слияния. Дефолтное значение - выключено.
Примечание: чекбокс 19 влияет на результат операций пересборки и слияния, а состояние чекбоксов 20-21 влияют только на операцию слияния!
22. Указание на автора, при нажатии - переход на страничку утилиты.
Варианты применения утилиты:
1. Нужно подправить названия, удалить пару пунктов, перенести пункты из главного меню в меню инструментов и обратно, "высушить" меню. Открываем меню как донора, правим, жмем 'Rebuild only'. Результатом будет файл BCD.rebuild.
2. Нужно "высушить" и дефрагментировать незадействованные кусты реестра ОС/РЕ (WINDOWS\system32\config\*)."Бросаем" из проводника куст на окно отображения пути к донору или реципиенту (без разницы), либо открываем куст как импорт/экспорт. Если файл имеет размер больше 524288 байт (файлы меньшего размера воспринимаются как BCD-меню) и сигнатура указывает, что это куст реестра, файл будет обработан (во временной папке). Результат работы с дополнительным расширением .new будет помещен рядом с исходником. Если результат нас удовлетворил, переименовываем исходник в *.bak (на всякий случай... хотя у меня проблем после такой операции никогда не было), а у нового файла убираем .new.
3. Нужно "склеить" два меню в одно. Открываем меню донора (Import from...), отмечаем нужное, правим названия. Потом выбираем меню получателя "Export to...". Еще раз проверяем, и жмем "Start ImpEx". Операция добавления может длиться пару десятков секунд (зависит от количества добавляемых пунктов), так что ждем сообщения.
Примечание: Исходные меню не затрагиваются, работа ведется с их копиями (рабочая папка %Temp%\BCDimpex.XXXXXXXXXXXXX, расширение генерируется для каждого запуска - это позволяет работать одновременно с несколькими копиями запущенной утилиты). Результаты работы - файлы BCD.rebuild и BCD.impex.

Примечание: что такое {ramdiskoptions} и "Device options"?

Этот раздел нужен для указания пути к boot.sdi. Последний файл необходим для организации РАМ-диска в памяти и загрузки WinPE. Различие между {ramdiskoptions} и "Device options" небольшое - только идентификатор ID. Если идентификатор - {ae5534e0-a924-466c-b836-758539a3ee3a}, тогда раздел относится к {ramdiskoptions} (т.е., ему присваивается псевдоним). Если из него сделать копию, для неё идентификатор станет другим и раздел будет отнесен к "Device options". Соответственно, {ramdiskoptions} может быть только один, а "Device options" - несколько. Обычная строчка для загрузки РАМ-сборки в меню BCD:
ramdisk=[boot]\2k10\WinPE\W7x86PE.WIM,{ramdiskoptions}
Но возможен и такой вариант:
ramdisk=[boot]\2k10\WinPE\W7x86PE.WIM,{7619dcc8-fafe-11d9-b411-000476eba25f}
Оба они рабочие при условии, что имеется соответствующий раздел {ramdiskoptions} и {7619dcc8-fafe-11d9-b411-000476eba25f} соответственно.
Итак, что делает "умная" замена:
а) все посылки к "Device options" заменяются на {ramdiskoptions}, т.е.,
ramdisk=[boot]\2k10\WinPE\W7x86PE.WIM,{7619dcc8-fafe-11d9-b411-000476eba25f} -> ramdisk=[boot]\2k10\WinPE\W7x86PE.WIM,{ramdiskoptions}
б) если отсутствует раздел {ramdiskoptions}, тогда все имеющиеся "Device options" сканируются на наличие текста .sdi, и, если найдено соответствие, то такой "Device options" преобразуется в {ramdiskoptions}
в) все разделы "Device options" удаляются.
При слиянии двух меню (обычно от двух разных сборок) {ramdiskoptions} может быть лишь один. Единственное требование - в этом разделе должен быть указан валидный путь к boot.sdi, и неважно, из какой сборки будет использоваться этот файл (в большинстве сборок он идентичен... за исключением сборок, в которых используется подправленный /уменьшенный/ вариант этого файла).
Утилиту можно распространять без ограничения. Желательно указывать ссылку на эту страничку (мало ли - вдруг обновление утилиты или глюки будут).
Скачать: версии: 1.0 / 1.1
Вложение

Скачать BCDimpex v1.0 из usbtor



Последний раз редактировалось: conty9 (2016-02-18 10:59), всего редактировалось 39 раз(а)

[Цитировать]

    conty9
  • 100
  • Стаж: 2 года 11 месяцев
  • Сообщений: 915
  • Репутация:69

    [+] [-]
Версия 0.2. Изменения:
1. Интегрированы BootICE (урезанный до BCD-редактора) и BCDtool. Запуск BootICE возможен как в professional-режиме (настройка по-умолчанию, чекбокс Pro), так и в упрощенном. Выбор пациента для редактирования - посредством радиокнопок (<< и >>). Верхние - "импортное" меню и результата Rebuild (файл BCD.upd в папке утилиты). Нижние - "экспортное" меню и результата слияния (BCD.exp в папке утилиты). Редактируется копия соответствующего меню в подпапке темпового каталога утилиты с произвольным именем (5 цифр). После окончания редактирования (выхода из BootICE или BCDtool) оригинал переименовывается (добавляется расширение .bak), и оригиналом становится новый файл. Если редактируется "импортное" меню, тогда также обновляется окно программы (перечитывается заново). Есть возможность множественного запуска BootICE / BCDtool, причем даже с одним меню (точнее, его копиями). В таком случае нужно учитывать, что результат будет использован из копии, закрытой ПОСЛЕДНЕЙ. Также можно открыть разные меню ("импортное", "экспортное", и результирующих).
2. Изменен алгоритм расчета позиции окна. Теперь последняя позиция (если производилась ЛЮБАЯ операция) хранится в реестре (HKLM\SOFTWARE\BCDimpex) и используется при последующем запуске. Если окно выходит за рамки (слева или сверху), тогда значение корректируется (20 пикселей слева или сверху соответственно).-Судя по количеству скачиваний версии 0.1 за несколько часов, утиль заинтересовала народ.

[Цитировать]

    conty9
  • 100
  • Стаж: 2 года 11 месяцев
  • Сообщений: 915
  • Репутация:69

    [+] [-]
Интерфейс шапки утилиты уже несколько раз переделывался. Вот текущий вариант.

Радиокнопка 1 означает, что BCDtool и BootICE будут работать с "импортным" файлом, а ".\" откроет папку с ним; 2 - то же, но с экспортным файлом; 3 - с обновленным файлом (.upd); 4 - с результатом слияния (.exp). Если соответствующий файл не выбран (для 1-2) или отсутствует (для 3-4), тогда BCDtool и BootICE не запускаются, а ".\" откроет папку утилиты. Чекбокс "Изя" - для запуска BootICE в упрощенном режиме (по-умолчанию - профессиАнальный).
Такой вот круговорот радиокнопок в природе.
По поводу работы под ХР - посмотрю, в чем загвозка. Под С9РЕ работает (текущий вариант), хотя есть еще парочка нюансов. И с множественным запуском BCDtool и BootICE пока не все проблемы решил.


Последний раз редактировалось: conty9 (2015-11-14 11:24), всего редактировалось 1 раз

[Цитировать]

    conty9
  • 100
  • Стаж: 2 года 11 месяцев
  • Сообщений: 915
  • Репутация:69

    [+] [-]
Версия 0.3. Вроде, стабильная получилась. Что исправлено: работа с "неудобными" путями (если в пути есть запятая), под С9РЕ работает (ХР под руками нет), работает повторное слияние (раньше работал только первый запуск), подправлен интерфейс, множественный запуск BootICE/BCDtool (теперь, если работаем с одним и тем же меню, после работы остается результат из ПОСЛЕДНЕЙ запущенной утилиты), и прочее. Редактор из BootICE теперь называется в меню BCD edit (поскольку BootICE урезан именно до него).


Последний раз редактировалось: conty9 (2015-11-13 09:41), всего редактировалось 1 раз

[Цитировать]

    conty9
  • 100
  • Стаж: 2 года 11 месяцев
  • Сообщений: 915
  • Репутация:69

    [+] [-]
BCDimpex v0.4.
Изменения:
1. Добавлено окно просмотра. Доступно автообновление окна на результат последней операции (чекбокс "Autoupdate") или изменение настроек радиокнопок выбора "цели". Положение окна и состояние чекбокса сохраняются в реестре при выходе.
2. Немного изменен интерфейс главного окна. Добавил подсвечивание пункта автозапуска (светло-зеленым).
3. Размер максимального окна BCDimpex теперь рассчитывается, исходя из разрешение экрана по вертикали. Поэтому количество обрабатываемых пунктов будет разным при различных разрешениях. С правого края над списком (в основном окне и окне просмотра) индицируется кол-во пунктов меню | максимальное кол-во видимых пунктов. На скриншоте это 17|47 и 21|51, т.е. для разрешения 1920х1080 максимальное кол-во отображаемых пунктов 47 и 51 для главного окна и окна просмотра соответственно (для 1024х768 это 30 и 34). Если цифры совпадают, есть вероятность, что не все пункты меню отображаются (ну ОЧЕНЬ длинное меню).
4. Подправлена повторная обработка (если после первой обработки были изменения).
5. Переделана обработка для совместимости с ХР. Проблема под ХР заключалась в том, что reg.exe от ХР не воспринимает ключ /y при сохранении.

Скриншот (слева - главное окно, справа - окно просмотра с результатом слияния)



Последний раз редактировалось: conty9 (2015-11-13 09:44), всего редактировалось 2 раз(а)

[Цитировать]

    conty9
  • 100
  • Стаж: 2 года 11 месяцев
  • Сообщений: 915
  • Репутация:69

    [+] [-]
Версия 0.4.1. Подправлен первый запуск (теперь должно открывать просмотр нормально, спасибо SV-2k10 за определение условий возникновения бага). Также теперь при отсутствии перемещения окон изменения в реестр не пишет (т.е., пишет только измененные данные).
Нижние чекбоксы ({globalsettings}/{ramdiskoptions}/{xxxxxxxxxxxxxx}) пока нерабочие.

[Цитировать]

    conty9
  • 100
  • Стаж: 2 года 11 месяцев
  • Сообщений: 915
  • Репутация:69

    [+] [-]
Версия 0.5. Изменения: новая иконка, реализовал возможность добавления {globalsettings}, {ramdiskoptions} и Device options. Как это все работает: настройки донора (Import from...): {globalsettings}, {ramdiskoptions} и Device options (если отмечено птичкой соответствующий пункт) "перекрывают" настройки реципиента (Export to...). Если что-либо отсутствует у донора, соответствующий чекбокс неактивен. Если имеется - активен и по умолчанию отмечен.
Примечание: Уточню, что Device options - это тот же {ramdiskoptions} для "неправильных" BCD (в обеих описывается путь к boot.sdi, необходимому для создания RAM-диска при загрузке WinPE). При этом {ramdiskoptions} - это псевдоним (и может быть лишь один), а вот у "Device options" нет псевдонима, и он может использоваться только по идентификатору (причем допускается несколько вариантов "Device options"). BCDimpex обработает только первый (по идентификатору) вариант "Device options"! В общем и целом, правильнее привести все посылки к "Device options" на {ramdiskoptions}.
По идее, теперь при слиянии должен получиться полностью рабочий вариант объединенного меню без дополнительной правки.


Последний раз редактировалось: conty9 (2015-11-21 09:32), всего редактировалось 1 раз

[Цитировать]

    conty9
  • 100
  • Стаж: 2 года 11 месяцев
  • Сообщений: 915
  • Репутация:69

    [+] [-]
Версия 1.0. Изменения: добавил возможность "высушить" файлы кустов реестра - т.е., кусты (SOFTWARE, SYSTEM, DEFAULT, NTUSER, ...) будут дефрагментированы, а "мусор" от предыдущих правок будет из них удален. Можно применять как для кустов из ядра WinPE (WINDOWS\system32\config\*), так и для кустов неработающей ОС (под WinPE). Как это работает: "бросаем" из проводника куст на окно отображения пути "импортного" или "экспортного" файла, либо открываем куст как импорт/экспорт. Если файл имеет размер больше 524288 байт (файлы меньшего размера воспринимаются как BCD-меню) и сигнатура указывает, что это куст реестра, файл будет обработан (во временной папке). Результат работы с дополнительным расширением .new будет помещен рядом с исходником. Если результат нас удовлетворил, переименовываем исходник в *.bak (на всякий случай... хотя у меня проблем после такой операции никогда не было), а у нового файла убираем .new. Зачем это нужно? Дефрагментация и "усушка" положительно влияют на упаковку файла (уменьшение wim-ядра WinPE) и скорость работы (это уже больше относится к ОС).

[Цитировать]

    helg14
  • 1607
  • Стаж: 2 года 1 месяц
  • Сообщений: 26
  • Репутация:0

    [+] [-]
  • Откуда: Ptg
Очень нужная весчь, я такую еще на старом форуме С.Стрельца вопрошал.
Потестил 1.0.7. Запускал на Win10 x64 и Win7 x86. Долго не мог врубиться в назначение чекбоксов п.16 - ну нигде ведь не написано, что они для ПЕРЕМЕЩЕНИЯ пунктов из основного раздела меню в раздел инструментов, причем эти манипуляции проводятся исключительно с меню донора. А если обе птички поставить, что будет? А я вот поначалу подумал, что это отображается уже макет результата слияния обоих меню (и манипулировать тоже можно содержимым обоих меню) - а это было бы круто, согласитесь?
Еще обнаружил один маленький баг - утилита никак не реагирует на совпадающие ID, просто тихо игнорирует такие пункты из меню донора. Я сливал родственные сборки и целый час не мог понять, почему один пункт не хочет вливаться, пока не сделал для каждого меню и не сравнил
bcdedit /store BCD.81 /v /enum all
с опцией /V, иначе без нее одинаковые IDы в обоих меню маскировались под алиасами "default"
Соответственно, смею предложить добавить в утилиту опции "Перегенерить все IDы при импорте", "Перегенерить IDы для дублей" или что-то вроде.

[Цитировать]

    conty9
  • 100
  • Стаж: 2 года 11 месяцев
  • Сообщений: 915
  • Репутация:69

    [+] [-]
18668Смею предложить добавить в утилиту опцию "Перегенерить IDы" или что-то вроде.
Предлагать можно очень многое. Но нужно иметь возможность проделать это с помощью bcdedit. Мелкомягкие считают, что вполне достаточно того, что идентификатор каждой записи, созданной bcdedit - уникален... и, соответственно, менять его не нужно.

[Цитировать]

    helg14
  • 1607
  • Стаж: 2 года 1 месяц
  • Сообщений: 26
  • Репутация:0

    [+] [-]
  • Откуда: Ptg
Мелкомягкие считают, что ... идентификатор каждой записи, созданной bcdedit - уникален... и, соответственно, менять его не нужно
Людям свойственно ошибаться, и сборкоделы - не исключение. К примеру, была некая сборка на Win8.1, переделал автор на Win10 - в BCD по быстрому bootice-ом название и имя образа перебил, а ID остался старый.
нужно иметь возможность проделать это с помощью bcdedit ...
если нехороший ID известен, то перед слиянием полечить меню донора как-то так
bcdedit /copy {нехороший-ID} /d "Наименование-дубля"
bcdedit /delete {нехороший-ID} /cleanup
Впрочем, и BootIce и BCDtool умеют копировать пункты меню (а при копировании генерится новый ID) - я так и проделал, пользуясь исключительно функционалом вашей утилиты.


Последний раз редактировалось: helg14 (2016-02-11 12:57), всего редактировалось 1 раз

[Цитировать]

    conty9
  • 100
  • Стаж: 2 года 11 месяцев
  • Сообщений: 915
  • Репутация:69

    [+] [-]
helg14, в принципе, нарисовалась идейка, как сменить. Но - пока загружен, где-то через недельку попробую реализовать.

[Цитировать]

    gera_serg
  • 1171
  • Стаж: 2 года 4 месяца
  • Сообщений: 1010
  • Репутация:-13

    [+] [-]
conty9,
Хотелось бы где-то видеть сообщение или метку "ВCD изменен"

[Цитировать]

    helg14
  • 1607
  • Стаж: 2 года 1 месяц
  • Сообщений: 26
  • Репутация:0

    [+] [-]
  • Откуда: Ptg
Слегка не в тему, но случайно выплыл неприятный косяк BOOTICE (и вашего "BCD Edit" соответственно тоже).
Если произвести такую последовательность действий:
- на пункте BCD меню кликнуть "Duplicate this entry", создается полная копия этого пункта (естессно ID другой).
- на этом же пункте BCD меню кликнуть "Delete this entry", пункт удалится.
И тут ! внимание !- вдруг мы видим, что заодно удалился пункт "Device options"! Круто !!!
Проверка (ну вдруг это чисто "морда" глючит)
bcdedit /store BCD.81 /v /enum all
подтверждает - увы, таки удалился.
Причем эти действия по отдельности не приводят к такому печальному результату.
PS. вряд ли iPauly кинется исправлять свой BOOTICE ...

[Цитировать]

    conty9
  • 100
  • Стаж: 2 года 11 месяцев
  • Сообщений: 915
  • Репутация:69

    [+] [-]
helg14, я предпочитаю использовать BCDtool, самый "правильный" инструмент. Хотя у тего есть один существенный недостаток - сортировать меню очень неудобно (без знаний почти нереально).

Страница 1 из 3


Показать сообщения:    

Текущее время: 23-Ноя 06:41

Часовой пояс: UTC + 3


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