none
Como puedo eliminar una carpeta de "Regedit" por medio de codigo C# RRS feed

  • Pregunta

  • Buenas tardes y un gran saludos, el motivo de mi pregunta es que me gustaría Eliminar las carpeta "MsConfig" que se encuentra en "REGEDIT" desde C# pero la verdad no se como, he busca códigos por internet pero solo borran claves, espero me puedan ayudar, esta es la siguiente ruta de REGEDIT, "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig".

    Nota: si tengo permisos de administrador con App.manifest, saludos 

    martes, 13 de marzo de 2018 23:28

Respuestas

  • El comando reg.exe también tiene la opción de especificar si borrar de la versión de 32 o de la versión de 64 bits.  Si mal no recuerdo, porque hace bastante que no trabajo en el área, HKLM\Software tiene ambas versiones.  Trate con ambas versiones.

    //El cambio está al final --------->
    using (Process p = Process.Start("reg.exe", "delete \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Shared Tools\\MSConfig\" /f /reg:32"))
    {
        p.WaitforExit();
    }
    //Listo.

    Y si ese no tiene efecto, pruebe con /reg:64.


    Jose R. MCP
    Code Samples

    • Marcado como respuesta Jovanny CJ miércoles, 14 de marzo de 2018 1:12
    miércoles, 14 de marzo de 2018 1:06
    Moderador

Todas las respuestas

  • No existen carpetas en el registro de Windows.  Si le parece que es una carpeta, en realidad es una clave.  El código que ha encontrado es el que busca.

    Jose R. MCP
    Code Samples

    martes, 13 de marzo de 2018 23:34
    Moderador
  • bueno a un así no puedo eliminarla no me deje el código que utilice y lo quise hacer fue por CMD fue el siguiente

    cmd.StandardInput.WriteLine(@"reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig /f");

    martes, 13 de marzo de 2018 23:38
  • Esa es una forma sumamente extraña de hacer eso.

    Note que hay un espacio en el nombre de la clave.  Tiene entonces que usar comillas dobles para encerrar el nombre de la clave.

    using (Process p = Process.Start("reg.exe", "delete \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Shared Tools\\MSConfig\" /f"))
    {
        p.WaitforExit();
    }
    //Listo.


    Jose R. MCP
    Code Samples

    martes, 13 de marzo de 2018 23:41
    Moderador
  • Hola de nuevo, gracias por contestar rápido, que crees que no lo borra, si hace la acción, pero no la borra, y lo siento por el código de hacer rato no te lo proporcione completo, deja te lo doy de nuevo.

    Process cmd = new Process();
    
    cmd.StartInfo.FileName = "cmd.exe";
    cmd.StartInfo.RedirectStandardInput = true;
    cmd.StartInfo.RedirectStandardOutput = true;
    cmd.StartInfo.CreateNoWindow = true;
    cmd.StartInfo.UseShellExecute = false;
    cmd.Start();
    
    cmd.StandardInput.WriteLine(@"reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig /f");
    
    cmd.StandardInput.Flush();
    cmd.StandardInput.Close();
    cmd.WaitForExit();
             
    Console.WriteLine(cmd.StandardOutput.ReadToEnd());
    Console.Read();



    • Editado Jovanny CJ martes, 13 de marzo de 2018 23:54
    martes, 13 de marzo de 2018 23:52
  • Sigue siendo una cosa extraña el escribir la línea de comando a través de una consola invisible.  La consola no es necesaria para nada.  No es como si un programa de consola no pudiera correr sin cmd.exe.  Es una concepción errónea.  Ese "reg" es un ejecutable por sí mismo llamado reg.exe.  Simplemente estamos acostumbrados, como humanos, a abrir una consola (cmd.exe), y escribir el comando.  Así que olvide cmd.exe.  El ejecutable a correr es reg.exe y los argumentos son lo demás a partir de "delete...".

    Si el comando falla, el problema no es el código de C# que le proporcioné.  Pruébelo "a mano" a ver si arroja algún error.  Si le funciona "a mano" en una consola, tiene que funcionarle desde el código que le di, que es diferente al suyo sobre todo en algo muy importante:  Al suyo, en la línea de comando que escribe, le faltan unas comillas dobles.

    Ahora bien, acabo de abrir una consola y escribí reg delete /?.  Dice que el rootkey es abreviado.  Debería usted sustituir HKEY_LOCAL_MACHINE con HKLM.  A ver si hay diferencia.  Yo lo haría con HKLM porque eso dice reg.exe que debo hacer.


    Jose R. MCP
    Code Samples

    miércoles, 14 de marzo de 2018 0:28
    Moderador
  • Hola de nuevo hice lo que me indicaste pero no la borra de echo probe tu código con esta ruta "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU" y sin problemas lo ejecuto, pero no entiendo  la ruta de "Msconfig" la tome del mismo REGEDIT

    miércoles, 14 de marzo de 2018 0:59
  • El comando reg.exe también tiene la opción de especificar si borrar de la versión de 32 o de la versión de 64 bits.  Si mal no recuerdo, porque hace bastante que no trabajo en el área, HKLM\Software tiene ambas versiones.  Trate con ambas versiones.

    //El cambio está al final --------->
    using (Process p = Process.Start("reg.exe", "delete \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Shared Tools\\MSConfig\" /f /reg:32"))
    {
        p.WaitforExit();
    }
    //Listo.

    Y si ese no tiene efecto, pruebe con /reg:64.


    Jose R. MCP
    Code Samples

    • Marcado como respuesta Jovanny CJ miércoles, 14 de marzo de 2018 1:12
    miércoles, 14 de marzo de 2018 1:06
    Moderador
  • Gracias ya lo puede hacer sin ningún problema y muchas gracias porque hoy me enseñaste algo nuevo como "reg.exe"a lugar de "cmd.exe" y la versión del sistema para así lograr borrar bien las claves, saludos y gracias por tu paciencia  
    miércoles, 14 de marzo de 2018 1:11