public RegistryKey OpenSubKey(RegistryKey rkey, string keyName, bool writable) { int num = 131097; if (writable) { num |= 131078; } IntPtr handle = Win32RegistryApi.GetHandle(rkey); IntPtr intPtr; int num2 = Win32RegistryApi.RegOpenKeyEx(handle, keyName, IntPtr.Zero, num, out intPtr); if (num2 == 2 || num2 == 1018) { return(null); } if (num2 != 0) { this.GenerateException(num2); } return(new RegistryKey(intPtr, Win32RegistryApi.CombineName(rkey, keyName), writable)); }