private static string FindByDisplayName(Microsoft.Win32.RegistryKey parentKey, string name) { string[] nameList = parentKey.GetSubKeyNames(); for (int i = 0; i < nameList.Length; i++) { Microsoft.Win32.RegistryKey regKey = parentKey.OpenSubKey(nameList[i]); try { if (regKey.GetValue("DisplayName").ToString() == name) { return regKey.GetValue("InstallLocation").ToString(); } else{ //Debug.Log(nameList[i] + ", " + regKey.Name + " : " + regKey.GetValue("InstallLocation").ToString()); } } catch { //Debug.LogError ("AAA"); } } return ""; }
private static void CopyKeyRecursive(Microsoft.Win32.RegistryKey sourceKey, Microsoft.Win32.RegistryKey destKey) { foreach (string ValueName in sourceKey.GetValueNames()) { object Val = sourceKey.GetValue(ValueName); destKey.SetValue(ValueName, Val, sourceKey.GetValueKind(ValueName)); } foreach (string SubKeyName in sourceKey.GetSubKeyNames()) { using (Microsoft.Win32.RegistryKey sourceSubKey = sourceKey.OpenSubKey(SubKeyName, false)) using (Microsoft.Win32.RegistryKey destSubKey = destKey.CreateSubKey(SubKeyName)) { CopyKeyRecursive(sourceSubKey, destSubKey); } } }