Quando você cria um arquivo VHD, eles são essencialmente idênticos enquanto estão vazios. Isso vale para qualquer sistema que possa usar um arquivo VHD, incluindo o Microsoft Virtual PC, o Virtual Server, o Hyper-V, o Xen e, acredito, o Virtual Box.
Mas você coloca algo nesse VHD e eles não são mais idênticos. Nesse caso, você instalou um sistema operacional em cima de uma máquina virtual e o sistema operacional foi personalizado para essa máquina virtual. Agora os arquivos VHD não são mais idênticos.
O valor pelo qual duas instalações diferentes do sistema operacional (que é o que você estava realmente perguntando) diferem uma da outra depende do quanto as duas máquinas diferentes (físicas ou virtuais) diferem umas das outras. O Virtual PC e as máquinas virtuais do Hyper-V diferem até certo ponto. A parte importante aqui é que o Hyper-V suporta vários processadores e o Virtual PC não. Assim, o Windows se instalará de uma maneira que depende do suporte a múltiplos processadores e, portanto, não será executado no Virtual PC, a menos que você diga ao carregador para inicializar de forma lenta, escolhendo um HAL em cada inicialização.
Para fazer isso, digite "bcdedit / set detecthal yes".
Você pode montar o VHD e fazer isso off-line, se quiser, usando o argumento "/ store" para bcdedit, apontando para o VHD.
Em geral, o Xen e o VirtualBox serão ainda mais diferentes do Virtual PC do que do Hyper-V. Para mover um arquivo VHD entre esses sistemas, você provavelmente precisará mexer nos drivers de armazenamento e talvez em outras coisas. Você certamente desejará desinstalar quaisquer "adições" ou "componentes de integração" específicos da máquina virtual antes de movê-la.