/// <summary>
        /// Tras uma informação anteriormente gravada no registro do windows
        /// ATENÇÃO: Cuidado com o que faz no registro do windows,
        /// dependendo da operação execultada vc vai danificar o Sistema Operacional,
        /// trazendo vários transtornos, então muita atenção no que mandar execultar no registro.
        /// </summary>
        /// <param name="_RaizRegistro">Informe a raíz do registro.</param>
        /// <param name="Caminho">Informe o caminho que contem o valor desejado.</param>
        /// <param name="NomeChave">Informe o nome da chave onde existe o valor desejado.</param>
        public static string LerRegistro(RaizRegistro _RaizRegistro, string Caminho, string NomeChave)
        {
            try
            {
                string Retorno;
                // cria uma referêcnia para a chave de registro Software
                if (_RaizRegistro == RaizRegistro.HKEY_LOCAL_MACHINE)
                {
                    RegistryKey Registro = Registry.LocalMachine.OpenSubKey(Caminho, true);
                    Retorno = Convert.ToString(Registro.GetValue(NomeChave));
                    Registro.Close();
                }
                else if (_RaizRegistro == RaizRegistro.HKEY_CLASSES_ROOT)
                {
                    RegistryKey Registro = Registry.ClassesRoot.OpenSubKey(Caminho, true);
                    Retorno = Convert.ToString(Registro.GetValue(NomeChave));
                    Registro.Close();
                }
                else if (_RaizRegistro == RaizRegistro.HKEY_CURRENT_CONFIG)
                {
                    RegistryKey Registro = Registry.CurrentConfig.OpenSubKey(Caminho, true);
                    Retorno = Convert.ToString(Registro.GetValue(NomeChave));
                    Registro.Close();
                }
                else if (_RaizRegistro == RaizRegistro.HKEY_CURRENT_USER)
                {
                    RegistryKey Registro = Registry.CurrentUser.OpenSubKey(Caminho, true);
                    Retorno = Convert.ToString(Registro.GetValue(NomeChave));
                    Registro.Close();
                }
                else //if(_RaizRegistro == RaizRegistro.HKEY_USERS)
                {
                    RegistryKey Registro = Registry.Users.OpenSubKey(Caminho, true);
                    Retorno = Convert.ToString(Registro.GetValue(NomeChave));
                    Registro.Close();
                }

                return(Retorno);
            }
            catch (Exception erro)
            {
                CriarChaveRegedit(_RaizRegistro, Caminho, NomeChave, "");
                return("Erro no leitura do Registro.\n" + erro.Message);
            }
        }
        /// <summary>
        /// Grava uma informação no registro do windows.
        /// ATENÇÃO: Cuidado com o que faz no registro do windows,
        /// dependendo da operação execultada vc vai danificar o Sistema Operacional,
        /// trazendo vários transtornos, então muita atenção no que mandar execultar no registro.
        /// </summary>
        /// <param name="_RaizRegistro">Informe a raíz do registro.</param>
        /// <param name="Caminho">Informe o caminho que será gravado o valor.</param>
        /// <param name="NomeChave">Informe o nome da chave onde existe o valor a ser gravado.</param>
        /// <param name="NomeValorSequencia">Informe o nome da sequencia onde o valor será gravado.</param>
        /// <param name="Valor">Informe o valor a ser gravado.</param>
        /// <returns>Retorna uma mensagem dizendo se a operação foi realizada com sucesso ou não.</returns>
        public static string CriarChaveRegedit(RaizRegistro _RaizRegistro, string Caminho, string NomeChave, string Valor)
        {
            try
            {
                if (_RaizRegistro == RaizRegistro.HKEY_LOCAL_MACHINE)
                {
                    RegistryKey Registro = Registry.LocalMachine.CreateSubKey(Caminho);
                    Registro.SetValue(NomeChave, Valor);
                    Registro.Close();
                }
                else if (_RaizRegistro == RaizRegistro.HKEY_CLASSES_ROOT)
                {
                    RegistryKey Registro = Registry.ClassesRoot.CreateSubKey(Caminho);
                    Registro.SetValue(NomeChave, Valor);
                    Registro.Close();
                }
                else if (_RaizRegistro == RaizRegistro.HKEY_CURRENT_CONFIG)
                {
                    RegistryKey Registro = Registry.CurrentConfig.CreateSubKey(Caminho);
                    Registro.SetValue(NomeChave, Valor);
                    Registro.Close();
                }
                else if (_RaizRegistro == RaizRegistro.HKEY_CURRENT_USER)
                {
                    RegistryKey Registro = Registry.CurrentUser.CreateSubKey(Caminho);
                    Registro.SetValue(NomeChave, Valor);
                    Registro.Close();
                }
                else //if(_RaizRegistro == RaizRegistro.HKEY_USERS)
                {
                    RegistryKey Registro = Registry.Users.CreateSubKey(Caminho);
                    Registro.SetValue(NomeChave, Valor);
                    Registro.Close();
                }

                return("Chave criada com sucesso!");
            }
            catch (Exception erro)
            {
                return("Erro ao tentar criar chave no registro do windows" + erro.Message);
            }
        }