/// <summary> /// Attempts to create the desired sub key to the specified parent. /// </summary> /// <param name="parentPath">The path to the parent for which to create the sub-key on.</param> /// <param name="name">output parameter that holds the name of the sub-key that was create.</param> /// <param name="errorMsg">output parameter that contians possible error message.</param> /// <returns>Returns true if action succeeded.</returns> public static bool CreateRegistryKey(string parentPath, out string name, out string errorMsg) { name = ""; try { RegistryKey parent = GetWritableRegistryKey(parentPath); //Invalid can not open parent if (parent == null) { errorMsg = "You do not have write access to registry: " + parentPath + ", try running client as administrator"; return(false); } //Try to find available names int i = 1; string testName = String.Format("New Key #{0}", i); while (parent.ContainsSubKey(testName)) { i++; testName = String.Format("New Key #{0}", i); } name = testName; using (RegistryKey child = parent.CreateSubKeySafe(name)) { //Child could not be created if (child == null) { errorMsg = REGISTRY_KEY_CREATE_ERROR; return(false); } } //Child was successfully created errorMsg = ""; return(true); } catch (Exception ex) { errorMsg = ex.Message; return(false); } }