For me this fails on Windows, because test exe is not run with permissions necessary to create the keys. The test is still incomplete - it doesn't test what happens when this chain pointing back to first progid, so { MyApp.DocumentTest.CurVer = MyApp.DocumentTest.1; MyApp.DocumentTest1.CurVer = MyApp.DocumentTest }. On Windows this fails. This should fail properly in case of { Test -> Test.1 -> Test.2 -> Test.1 } too.