If you do the following:
Dim person = New System.Security.Principal.NTAccount("Administrators")
Dim subkey = key.OpenSubKey("somesubkey", Microsoft.Win32.RegistryKeyPermissionCheck.Default, Security.AccessControl.RegistryRights.TakeOwnership)
rs = subkey.GetAccessControl()
rs.SetOwner(person)
subkey.SetAccessControl(rs)
It throws an exception on the OpenSubKey( ) line stating no permissions to take ownership. If you change OpenSubKey( ) to open as readonly, it then opens, but when you get to the call to SetAccessControl( ), a registry permission exception is thrown.
This looks like a chicken or egg problem. Can't set the owner unless you open the registry with setownership permission. Can't open the registry with setownership permissions because you don't own it.
It should allow OpenSubKey( ) with TakeOwnership because the account I am using is a member of the Administrators group running elevated.
This bug may stem as far back as Windows NT 3.1 as referenced in bug Q111546.