How to mount vhd in Windows Vista?

Solution 1:

  • Download MS Virtual Server 2005 R2 SP1
  • Download its update
  • Open an administrator command prompt and run setup /v"PATCH=%cd%\KB948515.msp ADDLOCAL=VHDMount"
  • Choose custom install
  • (optional) Use/add the following reg file for a very handy mounting

    Windows Registry Editor Version 5.00 
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD]
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell]
    @="Mount" 
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Dismount - Commit]
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Dismount - Commit\command]
    @="\"C:\\Program Files\\Microsoft Virtual Server\\Vhdmount\\vhdmount.exe\" /u /c \"%1\""
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Dismount - Discard]
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Dismount - Discard\command]
    @="\"C:\\Program Files\\Microsoft Virtual Server\\Vhdmount\\vhdmount.exe\" /u /d \"%1\""
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Mount]
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Mount\command]
    @="\"C:\\Program Files\\Microsoft Virtual Server\\Vhdmount\\vhdmount.exe\" /m \"%1\""
    
    [HKEY_CLASSES_ROOT\.vhd]
    @="Virtual.Machine.HD"
    
  • (optional) Install Virtual PC 2007 for a nice GUI to create/manage/merge disks

If you are using Home editions (officially unsupported by Virtual Server) my recommended workaround is using a hex editor on its setup.exe to change CAP_DisallowedOS = 1 string to 0.


In some rare(?) occasions, msiexec may crash almost at the end of installation with a 0xc000000d BEX error (VHD Mount Merge Module Custom Dll does something fishy while trying to install Microsoft Virtual Server Storage Bus driver)

Mysteriously, stopping WPDBusEnum service seemed to fix the issue.


Addendum: I have been getting quite a lot of BSOD with standby. So I decided for unmounting the thing before going to sleep, and re-mounting after resume. Unfortunately vhdstor driver seems to get stuck after awhile, locking disk file against further actions.

I eventually came down to program Microsoft Virtual Server Storage Bus on/off for every suspension