Bug 46943 - RegistryKey behavior is different from Windows
Summary: RegistryKey behavior is different from Windows
Status: NEW
Alias: None
Product: Class Libraries
Classification: Mono
Component: mscorlib (show other bugs)
Version: 4.6.0 (C8)
Hardware: PC Windows
: --- normal
Target Milestone: Untriaged
Assignee: Alexander Köplinger [MSFT]
URL:
Depends on:
Blocks:
 
Reported: 2016-11-14 18:15 UTC by Jason
Modified: 2016-11-14 19:41 UTC (History)
2 users (show)

See Also:
Tags:
Is this bug a regression?: Yes
Last known good build:


Attachments

Description Jason 2016-11-14 18:15:58 UTC
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:

[Test]
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")
      {
         testKeyInner.CreateSubKey("test");
      }
      Assert.IsTrue(testKey1.GetSubKeyNames().Contains("test");
   }
}

Note You need to log in before you can comment on or make changes to this bug.