steps I did: normal windows 8.1 install.
install firadisk driver, disable pagefile, hibernation etc. reboot into a PE. copy the contents of the C into a VHD. try the boot the VHD with grub4dos.
Since you copy Installed Windows 8.1 into vhd, you need to repair the registry key MountedDevices in your VHD SYSTEM registry.
The Disk Signature and the Partition Offset can be found in the MBR of the VHD.
In Windows 10 you can mount the 8.1 VHD in explorer with a double click on the file.
Tiny Hexer allows then to view the MBR and read the DiskSignature of 4 bytes at offset 0x1B8 and the Partition Offset of 4 bytes at 0x1C6
The correct value of the \DosDevices\C: key of 8.1 VHD can also be found in the registry MountedDevices of Windows 10 for the VHD mounted as drive N: in my case.
In VHD registry loaded as SYSTEM_VHD you can remove all MountedDevices entries except \DosDevices\C: and then repair this one for the correct DiskSignature and Partition Offset.
Also you need to repair the BCD inside the VHD e.g. with BOOTICE, since ApplicationDevice and OSDevise are now unknown and that will not work.
Most likely you also need UsbBootWatcher and you should empty folder Windows\Prefetch
All these precautions and some more are taken care of in VHD_W8_Compact.exe used for Making Portable and Mini 8
Better is to Install straight into VHD as done e.g. in making Win 10 x64 VHDX booting from Portable SSD
see - In that case there are no fixes needed.