private void RenameRegistryKey() { Logger.Write("Rename Registry."); try { if (RegKey.EndsWith(@"\")) { RegKey = RegKey.Substring(0, RegKey.Length - 1); } Logger.Write("Will try to rename " + RegHive + "\\" + RegKey + " into : " + RegName); RegistryKey parentKey = GetRegistryHive().OpenSubKey(RegKey.Substring(0, RegKey.LastIndexOf(@"\")), true); string subKeyName = RegKey.Substring(RegKey.LastIndexOf(@"\") + 1); CopyKey(parentKey, subKeyName, RegName); parentKey.DeleteSubKeyTree(subKeyName); parentKey.Flush(); parentKey.Close(); } catch (Exception ex) { Logger.Write("Error renaming Registry Key : " + RegHive + "\\" + RegKey + "\r\n" + ex.Message); } }
private void DeleteRegistryKey() { Logger.Write("Deleting Registry Key."); try { Logger.Write("Will try to delete " + RegHive + "\\" + RegKey); RegistryKey parentKey = GetRegistryHive().OpenSubKey(RegKey.Substring(0, RegKey.LastIndexOf(@"\")), true); string subKeyName = RegKey.Substring(RegKey.LastIndexOf(@"\") + 1); parentKey.DeleteSubKeyTree(subKeyName); parentKey.Flush(); parentKey.Close(); Logger.Write("Successfully deleted " + RegHive + "\\" + RegKey); } catch (Exception ex) { Logger.Write("Error Deleting Registry Value : " + ex.Message); } }
/// <summary> /// Uninstall this msh component /// </summary> /// <param name="savedState"></param> public sealed override void Uninstall(IDictionary savedState) { base.Uninstall(savedState); if (this.Context != null && this.Context.Parameters != null && this.Context.Parameters.ContainsKey("RegFile")) { string regFile = this.Context.Parameters["RegFile"]; // If regfile is specified. Don't uninstall. if (!String.IsNullOrEmpty(regFile)) { return; } } string keyName; string parentKey; int index = RegKey.LastIndexOf('\\'); if (index >= 0) { parentKey = RegKey.Substring(0, index); keyName = RegKey.Substring(index + 1); } else { parentKey = ""; keyName = RegKey; } foreach (string root in MshRegistryRoots) { RegistryKey key = GetRegistryKey(root + parentKey); key.DeleteSubKey(keyName); } return; }
private void AddRegistryKey() { Logger.Write("Adding Registry Key."); try { Logger.Write("Will try to add : " + RegHive + "\\" + RegKey); string parentKeyName = RegKey.Substring(0, RegKey.LastIndexOf(@"\")); RegistryKey parentKey = GetRegistryHive().OpenSubKey(parentKeyName, true); string subKeyName = RegKey.Substring(RegKey.LastIndexOf(@"\") + 1); parentKey.CreateSubKey(subKeyName); parentKey.Flush(); parentKey.Close(); Logger.Write("Successfully add : " + RegHive + "\\" + RegKey); } catch (Exception ex) { Logger.Write("Error Adding Registry Value : " + ex.Message); } }
public override void Run(ref ReturnCodeAction returnCode) { Logger.Write("Running RenameRegKeyAction. Hive = " + this.Hive + " and RegKey = " + this.RegKey + " UseReg32 = " + this.UseReg32.ToString() + " NewName = " + this.NewName); try { RegistryKey hiveKey; switch (this.Hive) { case "HKey_Current_User": hiveKey = Registry.CurrentUser; // Il n'y a pas de notion de registre 32bit ou 64bit dans la ruche CURRENT_USER break; case "HKey_Local_Machine": hiveKey = this.UseReg32 ? RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32) : RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); break; default: throw new Exception("The Hive is not recognized."); } RegistryKey parentKey = hiveKey.OpenSubKey(RegKey.Substring(0, RegKey.LastIndexOf(@"\")), true); string subKeyName = RegKey.Substring(RegKey.LastIndexOf(@"\") + 1); CopyKey(parentKey, subKeyName, this.NewName); parentKey.DeleteSubKeyTree(subKeyName); parentKey.Flush(); parentKey.Close(); } catch (Exception ex) { Logger.Write("**** An error occurs : " + ex.Message); } Logger.Write("End of RenameRegKeyAction."); }
/// <summary> /// Opens the registry /// </summary> /// <returns></returns> private static RegistryKey OpenRegistry(bool writable = false) { string SettingsKey = "SOFTWARE\\" + (RegKey[0] == '\\' ? RegKey.Substring(1) : RegKey); return(RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(SettingsKey, writable)); }