示例#1
0
        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);
            }
        }
示例#2
0
        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;
        }
示例#4
0
        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.");
        }