When we upgraded to Mono 4.6 we found that several of our registry key related unit tests failed.
In our products unit tests we created a registry key in a using block and then called a method which created resulted in the same key being created, also in a using. Values were added to that key in the method before the key was disposed.
In our unit test we verified those values before disposing of the key in the test.
This currently results in a NullReference exception in a call to GetSubKeyNames but some analysis of the code shows that even if the crash was avoided the behavior would still be different from Windows.
The following unit test should pass:
public void TestGetValueNames()
using(var testKey1 = Registry.CurrentUser.CreateSubKey(@"Software\Xamarin\UnitTests").CreateSubKey("4.6.1"))
using(var testKeyInner = Registry.CurrentUser.CreateSubKey(@"Software\Xamarin\UnitTests").CreateSubKey("4.6.1")