Why does Hyper-V create a snapshot every time I apply a snapshot?

I was asked this question today.  My first response was: “It doesn’t”.  But after a bit of thought I realized what was going on for the user in question.  Whenever you take a snapshot of a Hyper-V virtual machine, we capture the point in time data about that virtual machine and then continue to run.  When you later apply that snapshot to the virtual machine – we will throw away any data that has not been captured in a virtual machine snapshot.

Imagine the following workflow:

  1. You create a virtual machine
  2. You install Windows and some applications
  3. You take a virtual machine snapshot
  4. You write your opus magnum inside the virtual machine
  5. You apply the snapshot taken in step three

You have now lost your opus magnum, and life no longer has any meaning for you (okay – I might be exaggerating here – but you have lost some data).  Hopefully, the consequences here are obvious to the user.  But in case they are not – we provide the following option:


When you apply a snapshot we ask you if you want us to take a new snapshot first – to capture any data that is in the present virtual machine.  Seems reasonable – right?  In this case the user must have checked the option to “don’t ask me again” without actually reading the text.  Now, every time that they take a snapshot – we create a new one to capture any potential data changes.  Hence the question in the title.

Luckily, this is simple to correct.

If you open the Hyper-V Settings and go all the way to the bottom of the list – you will see an option labeled Reset Check Boxes.  Go here and click the button – we will then clear every time you checked “don’t ask me again” and you will get all the default prompts and questions:


On a side note – and I know that I am criticizing myself here – it always bugs me when software has a “don’t ask me again” option on a dialog with multiple choices.  I never actually check the box here, because I can never be certain about what the outcome of checking the box will be (what will the software default to?).  This is something that I would like to see us handle better in the future.