Рабочее.
Дано: ПК с Windows, на котором диск был сконвертирован из MBR в GPT программой - менеджером дисков.
Задача - исправить загрузку Windows. При этом данные нельзя терять.
Ограничение - работает только для x64, и нужен загрузочный диск самих виндов.
Во-первых, если системный диск переделан в GPT, компьютер должен загружаться в режиме UEFI, для работы UEFI нужна партиция с ФС FAT32, которой обычно нет, если диск переделывали "в лоб" какой-либо программой (нашей разработкой, например, Paragon Hard Disk Manager 15). Поэтому такую партицию нужно вначале создать, причем в начале диска, потому что Микрософт создает свои UEFI-загрузчики именно до партиции с системой, и может закладываться на то, что EFI-партиция находится раньше. Кое на что она реально закладывается, так что предосторожность лишней не будет. Для этого берем программу класса Partition Manager, которая умеет выполнять изменение размера партиций и работает с GPT, создаем загрузочный носитель, грузим с него систему с GPT-диском, и выделяем в начале диска партицию типа EFI System Partition размером 200-500 МБ (больше ни к чему), и форматируем её в FAT32.
Во-вторых, на той партиции должен быть загрузчик Windows, его необходимо восстановить из носителя. Загружаем систему с DVD с виндами (желательно той же версии, которая установлена на ПК), запускаем командную строку. Запускаем в ней diskpart, в нём list volumes. Находим том с FAT32, который создали, по номеру, вводим select volume (номер), потом assign letter=v. То есть, подключаем его как диск V:. В том же списке находим основной том с виндами, таким же образом назначаем ему букву C. Проверяем. Выходим из diskpart ("exit"). Запускаем команду исправления содержимого загрузочного тома: bcdboot c:\windows /s v: /f ALL. Она создаст необходимые файлы на V: для загрузки Windows через UEFI. Перезагружаемся, проверяем.
Иногда бывает (у меня было), что система зависает при загрузке (8.1 просто гоняет свои точки в бесконечной медитации - тестировал на ней). Для исправления нужно загрузиться с носителя Windows и проверить, правильный ли тип партиции установлен для раздела EFI и раздела с данными. Точнее, установить правильный тип через тот же diskpart. Запускаем командную строку, diskpart, находим наш диск (list disk), выбираем (select disk (номер)), ищем обе партиции - с данными и EFI (list partition). Дальше для EFI-партиции выполняем select partition (номер), set id=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, а для партиции с данными выполняем select partition (номер), set id=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7. Типы взяты отсюда:
https://ru.wikipedia.org/wiki/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%BE%D0%B2_GUID первый означает системную партицию EFI, второй - партицию с данными Microsoft. Перезагружаемся, проверяем - должно уже работать.
Может, кому-то пригодится, все-таки.