Рубрики
Virtual PC Windows Софт

Как подключить/открыть vhd-файл (Virtual Hard Disk) в Windows XP и Vista

Если вы часто работаете с Virtual PC, то время от времени возникает необходимость открыть файл виртуального жесткого диска не в виртуальной, а в основной системе. В Windows 7 — это не проблема (vhd-фaйл легко подключается через «Управление дисками»). А вот в XP и Висте все сложнее: нужно установить утилиту vhdmount. Содержание:

Установка vhdmount

Утилита vhdmount входит в состав Microsoft Virtual Server 2005 R2 SP1 (это не отдельный сервис-пак, а полноценный сервер с SP1).

Скачиваем Microsoft Virtual Server 2005 R2 SP1.

Запускаем установщик (если включен UAC, то запускаем от имени Администратора). Выбираем Install:

Установка vhdmount (1)
Установка vhdmount (1)

Далее Custom:

Установка vhdmount (2)
Установка vhdmount (2)

Устанавливать все компоненты сервера нет необходимости. Выбираем только VHD Mount:

Установка vhdmount (3)
Установка vhdmount (3)

Завершаем установку. На этом первый этап закончен.

Создание контекстного меню

Теперь приступаем к созданию контекстного меню (чтобы не мучиться с командной строкой).

Необходимо создать файл с расширением reg и следующим содержанием:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Dismount]
@="Dismount"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Dismount\command]
@="\"C:\\Program Files\\Microsoft Virtual Server\\Vhdmount\\vhdmount.exe\" /u \"%1\""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Mount]
@="Mount"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Mount\command]
@="\"C:\\Program Files\\Microsoft Virtual Server\\Vhdmount\\vhdmount.exe\" /m /f \"%1\""

[HKEY_CLASSES_ROOT\.vhd]
@="Virtual.Machine.HD"

Если папка установки отличается от стандартной, то естественно, требуется изменить путь к vhdmount.exe. Vhdmount можно запускать с различными параметрами (например включить поддержку undo-диска для отката изменений). Чтобы ознакомиться с дополнительными параметрами, запустите vhdmount с параметром /? в командной строке.

После того как файл создан, запускаем его. Подтверждаем внесение изменений в реестр.

Проверяем результат. При правом клике на vhd-файле, вы должный увидеть новые пункты меню:

Контекстное меню vhdmount
Контекстное меню vhdmount

Установка драйвера vhdmount

Для установки драйвера открываем панель управления, переключаемся в «классический вид» и запускаем мастер «Установка оборудования»:

Установка драйвера vhdmount (1)
Установка драйвера vhdmount (1)

Выбираем «Установка оборудования, выбранного из списка в ручную»:

Установка драйвера vhdmount (2)
Установка драйвера vhdmount (2)

Выбираем «Показать все устройства» и жмем на Далее:

Установка драйвера vhdmount (3)
Установка драйвера vhdmount (3)

Нажимаем на «Установить с диска»:

Установка драйвера vhdmount (4)
Установка драйвера vhdmount (4)

Переходим в папку установки vhdmount и открываем файл vhdbus.inf:

Установка драйвера vhdmount (5)
Установка драйвера vhdmount (5)

Выбираем «Microsoft Virtual Server Storage Bus» и Далее:

Установка драйвера vhdmount (6)
Установка драйвера vhdmount (6)

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

Открываем Диспетчер устройств. Здесь вы увидите устройство Microsoft Server Storage Bus Device01 отмеченное восклицательным знаком:

Установка драйвера vhdmount (7)
Установка драйвера vhdmount (7)

Делаем на нем правый клик и выбираем «Обновить драйверы…». Выбираем ручную установку:

Установка драйвера vhdmount (8)
Установка драйвера vhdmount (8)

В поле «Искать драйверы в следующем месте» выбираем папку установки vhdmount и жмем Далее:

Установка драйвера vhdmount (9)
Установка драйвера vhdmount (9)
Установка драйвера vhdmount (10)
Установка драйвера vhdmount (10)

На этом все. Теперь подключаем виртуальный диск, открываем «Компьютер» и работаем с подключенным диском.

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

53 ответа к “Как подключить/открыть vhd-файл (Virtual Hard Disk) в Windows XP и Vista”

Спасибо за материал!
Я заметил некоторые особенности (тестировалось на Windows Server 2008 Enterprise x64 (не R2):

1. Несмотря на то, что на сайте MS в списке совместимых с Microsoft Virtual Server 2005 R2 SP1 операционных систем не указана Windows Server 2008, тем не менее, ПО установилось без проблем.
2. При монтировании VHD, диск подключается в OFFLINE, его нужно включить в ONLINE через оснастку «Управление дисками» в консоли «Управление компьютером».
3. При монтировании VHD драйвер MSVSSD переустанавливается автоматически каждый раз.
4. Если файл VHD подключён к какой-либо виртуальной машине — ВМ (MS HyperV), и она запущена, то сначала нужно завершить работу ВМ. Обратное также справедливо: нужно сначала демонтировать VHD, а потом запускать ВМ, которая его использует.

По /m %vhdname% он у меня виртуальный диск не монтировал хоть ты тресни, вероятно потому что он был «монолитным» без томов, это если верить справке, ввиду этого начал работать с командной строкой программы, по /p %vhdname% он на ура монтируется, по /u /с %vhdname% он отмонтируется с сохранением изменений, с ключом /d (вместо /с) изменения при отмонтировании не сохраняются, если мониторинг изменений не нужен то прописываем ключ /f вместо ключей «/с»/»/d». Так что представленный здесь рег-файл не панацея т.к. с подключением vhd-файла есть много вариантов и даже если исключить варианты с undo-диском (диском отмены) то остаётся ещё 2 варианта — vhd-файл с томами (представленный вариант) и без, ввиду этого более юзабельными будут батники mount/unmount с паузой на конце дабы в случае ошибок отследить вывод. В случае если том занят каким-то процессом и не отмонтируется юзайте Unlocker. Надеюсь данная информация кому-нибудь пригодится и поможет

***

утилита юзалась на WinXP SP3, до кучи была установлена документация помимо самого vhdmount’a, очень пригодилась к слову ))

***

P.S.

Спасибо за статью, т.к. она мне так или иначе сэкономила время предварительной установки vhdmount’a.

У меня такой вопрос, Все поставил все работает, с единственным НО!
Не удается подключить виртуальный жесткий диск который лежит на сетевой шаре

Failed to plug in the Virtual Hard Disk (VHD). VHDMount does not support mountin
g a VHD through Universal Naming Convention (UNC) paths or network drives.

Server2008SP2 Standart

По-моему в сообщение об ошибке все четко объяснено:
VHDMount не работает с сетевыми дисками.

Может сработает обходной маневр:
Подключите шару как сетевой диск.
А уже затем воспользуйтесь VHDMount.

Пробовал таже ошибка (( Просто мне нужно подключить именно сетевой виртуальный диск, Может ему как то дрова подсунуть? или есть еще маневры?

Есть еще одна мысль: сделать символьную ссылку на шару.

mklink c:\shared_folder \\server\shared_folder\

Вот это должно сработать.

С монтировался но драйвер не походит! Запуск этого устройства не возможен код 10 , Подсунуть драйвер пробовал из папки (((

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

By default, you can use symbolic links only on local volumes. If you attempt to access a symbolic link located on a shared folder (regardless of the location of the target) or copy a symbolic link to a shared folder, you will receive an error. You can change this behavior by configuring the following Group Policy setting:

Computer Configuration\Administrative Templates\System\NTFS File System\Selectively Allow The Evaluation Of A SymbolicLink

When you enable this policy setting, you can select from four settings:

Local Link To Local Target Enabled by default, this allows local symbolic links to targets on the local file system.
Local Link To Remote Target Enabled by default, this allows local symbolic links to targets on shared folders.
Remote Link To Remote Target Disabled by default, this allows remote symbolic links to remote targets on shared folders.
Remote Link To Local Target Disabled by default, this allows remote symbolic links to remote targets on shared folders.

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

статья, нет слов, интересная и полезная. но сдается, вы слегка накосячили где-то, ибо не все проходит по-писаному… поделюсь своими боданиями по теме. пытался делать по приведенной инструкции и в процессе выявилось несколько затыков. начать с того, что из рег-файла не добавляются в реестр значения параметров по умолчанию, хотя разделы и подразделы создаются исправно. приходится прописывать ручками. перепроверьте, где ошибка. драйвера ставятся нормально, однако при установке комп вышибает в ребут. но это не критично. с сопоставлением типа файла проблем нет, легко делается вручную из его свойств. монтаж из контекстного меню, как уже было замечено выше, открывает командную строку и тут же закрывает, ничего не прочесть. монтаж не происходит. проверял вводом в консоли вручную, ключ /m требует наличия службы виртуальных дисков, которой в ХР нет. в отличие от сервера 2003, где она присутствует по умолчанию. с ключом же /p монтаж происходит штатно. непонятки с параметром %1, сообщение как о недопустимом. убираешь — все в норме. разобрался и с демонтированием. достаточно перед тем сделать диск неактивным и все работает. думаю, это что-то вроде безопасного отключения флеш-накопителей. такие вот дела. система ХР SP3, на сервере 2003 еще не пробовал….

Сам я проделывал этот способ будучи под Вистой, с XP Не пробовал, так что возможны косяки.
В reg-файле, возможно, надо поставить «\» перед внутренними кавычками. Я исправил пример, попробуйте в этом варианте.

%1 — такого параметра нет. Это символ замены. Вместо него система должна подставить путь к файлу, который надо открыть. Без этого контекстное меню работать не будет.

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

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

Мне на момент написания статьи казалось, что как раз основные проблемы с Вистой будут ) А тут XP подвела… бывает…

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

Все! С reg-файлом разобрался.

Фишка в чем была: перед внутренними кавычками нужен слэш: \", но и перед слэшом тоже нужен слэш: \\

В статье ошибки исправил. Теперь все параметры вносятся корректно. Проверил )

В общем, спасибо, что обратили внимание!

Приветствую.
У меня windows xp на одной машине.

Никаких дров не ставил вообще, прямо в консольке сказал:
«C:\Program Files\Microsoft Virtual Server\Vhdmount\vhdmount.exe» /p d:\eric.vhd

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

Но у меня вылезла другая проблема. Файлы не сохраняются! Комп ушел в ребут. А загрузившись новых файлов не нашел на диске.

Ещё один недочёт, с этой тулзой, так то, что диск ммонтируется после загрузки. Причём не сразу.

Отмонтируется же он, видимо как-то не коректно. Ручками что ли делать?

Зато в windows 7, через diskpart, этот же образ подмонтировал и не заморачиваюсь. Работает чудесно.

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

Могу только посоветовать сделать настройку точно по инструкции )

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

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

К чему такие сложности? Если из VHD нужно вытянуть информацию при выключенной виртуальной ОС — воспользуйтесь последней версией архиватора 7-zip — он умеет работать с файлами VHD как с обычными архивами.

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

А вот в Windows 2008 не получается эта фича, при монтировании файла через контекстное меню ругается что не задано соответствие по умолчанию(
зайдите говорит в панель управления, и задайте соответствие по умолчанию для этого типа файла

Аналогичная ситуация, но под Windows Server 2003.
Раздел HKEY_CLASSES_ROOT\.vhd в наличии, а ассоциация с файлом отсутствует.

Да, остальные нормально создались и в меню правой кнопки Maunt/Dismount наличествуют. Но при попытке сделать Mount:

This file does not have a program associated with it for performing this action. Create an association in the Folder Options control panel.

Дважды переставил MS VS 2005 (только VHD из него), не помогло.

Хм…
Может вручную через граф интерфейс создать ассоциацию .vhd с vhdmount.exe, потом посмотреть в реестре, что изменилось.

Ассоциировал с vhdmount.exe вручную.
Теперь при двойном клике на файле открывается и тут же закрывается окно командной строки, а при попытке сделать Mount сообщение прежнее:

This file does not have a program associated……

Спасибо за помощь.

С утра со свежей головой снова рассмотрел ситуацию.
Оказалось, что ключи-то в
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Dismount\command
созданы, но внутри ключей — пустота.
Вручную прописал в них
«C:\Program Files\Microsoft Virtual Server\Vhdmount\vhdmount.exe» /u «%1»
Тоже самое проделал для ключа Mount
И все заработало.

Интересно, что заработало сразу, то есть по команде «Mount» ошибки не произошло и виртуальный диск сразу появился в Менеджере дисков и повторно устанавливать драйвера не пришлось.

О-о-о.
Смотрю вот на строку 13 в вышеуказанном рег-файле и думаю, а что это там за
«[netshelter]» такой в самом вначале прописан?
Вот из-за чего оно не стреляло :)

Мне нужно было этот файл в win 7 подключить. Хоть тут и не расписано как, но спасибо автору за правильное направление поиска

Сделал все так как, описано, возникло 2 проблемы,побольше и поменьше)
1 — «Microsoft Virtual Storage Bus» я нашел не в разделе дисков в медеджере устройств, а в разделе системных девайсов
2 — Дойдя до 10 пункта Вашего описания,указав путь, где искать драйвер, мне написали, что драйвер в этой папке не найден и устройство не может норм работать(((

Есть такая консольная чудо-штука, diskpart.
Начиная с висты она нативно поддерживает работу с .vhd — создание, монтирование и т.д.

Создать диск, монтировать, создать раздел, форматировать (админские права, консоль):

diskpart
create vdisk file=c:\windows7.vhd maximum=25600 type=fixed
select vdisk file=c:\windows7.vhd
attach vdisk
create partition primary
assign letter=v
format quick label=vhd
exit

Демонтировать:

diskpart
select vdisk file=c:\windows7.vhd
detach vdisk
exit

> Начиная с висты она нативно поддерживает работу с .vhd – создание, монтирование и т.д.
К сожалению, только начиная с Windows 7 и Windows Server 2008 R2.
На Висте diskpart версии 6.0.6002, и он не поддерживает команду select vdisk.
Проверил лично на Vista SP2 :)

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

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


Срок проверки reCAPTCHA истек. Перезагрузите страницу.