private static void RecurseCopyKey(RegistryKey sourceKey, RegistryKey destinationKey) { foreach (string valueName in sourceKey.GetValueNames()) { object obj = sourceKey.GetValue(valueName); RegistryValueKind valueKind = sourceKey.GetValueKind(valueName); destinationKey.SetValue(valueName, obj, valueKind); } foreach (string subKeyName in sourceKey.GetSubKeyNames()) { RegistryUtils.RecurseCopyKey(sourceKey.OpenSubKey(subKeyName), destinationKey.CreateSubKey(subKeyName)); } }
public static void MoveUnifiedInstallerRegistryFromWow64() { try { RegistryKey registryKey1 = Registry.LocalMachine.OpenSubKey(Strings.RegistryBaseKeyPath); if (registryKey1 != null && !string.IsNullOrEmpty((string)registryKey1.GetValue("Version", (object)null))) { return; } RegistryKey registryKey2 = Registry.LocalMachine.OpenSubKey("Software", true); RegistryKey sourceKey = Registry.LocalMachine.OpenSubKey("Software\\WOW6432Node\\BlueStacks" + Strings.GetOemTag()); if (sourceKey == null) { return; } RegistryKey subKey = registryKey2.CreateSubKey("BlueStacks" + Strings.GetOemTag()); RegistryUtils.RecurseCopyKey(sourceKey, subKey); registryKey2.DeleteSubKeyTree("WOW6432Node\\BlueStacks" + Strings.GetOemTag()); RegistryUtils.GrantAllAccessPermission(subKey); } catch { } }