2 mar 2012

[WinForm] - Ejecutar Aplicación al Iniciar Windows

 

Buen Día a todos! En esta oportunidad se verá cómo ejecutar una aplicación al iniciar windows mediante los registros, para comenzar debemos crear 2 botones(uno llamado btnInicio y otro btnNoInicio) y 3 variables en el formulario e indexarles los valores en el evento load del formulario, en el evento Click del boton, donde 1 es para obtener el nombre del exe que se ejecuta y el otro para obtener su ruta y luego llamar  al metodo :


Codigo en c# :

//Variables
string lbl = "";
string path = "";
//NombreApp será el identificador en el registro
 
string nombreApp = "";


//Evento load del formulario
 
private void Formulario_Load(object sender, EventArgs e)
{
            lbl = Path.GetFileName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
            path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase).Remove(0, 6) + "\\" + lbl;
            nombreApp = "MiAplicacion";
}


Ahora en el botón btnInicio realizaremos el siguiente código :



// Resgistrará en Inicio del registro la aplicación indicada
// Devuelve True si todo fue bien, False en caso contrario
// Guardar la clave en el registro
// HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
            try
            {
                RegistryKey runK = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
                // añadirlo al registro
                // Si el path contiene espacios se debería incluir entre comillas dobles
                if (nombreApp.StartsWith("\"") == false && nombreApp.IndexOf(" ") > -1)
                {
                    nombreApp = "\"" + nombreApp + "\"";
                }
                runK.SetValue(path, nombreApp);
                return true;
            }
            catch (Exception ex)
            {
                Console.WriteLine("ERROR al guardar en el registro.{0}Seguramente no tienes privilegios suficientes.{0}{1}{0}---xxx---{2}", '\n', ex.Message, ex.StackTrace);
                return false;
            }


Y finalmente en el boton btnNoInicio el siguiente codigo :



// Quitará de Inicio la aplicación indicada
 // Devuelve True si todo fue bien, False en caso contrario
 // Si la aplicación no estaba en Inicio, devuelve True salvo que se produzca un error
            try
            {
                RegistryKey runK = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
                // quitar la clave indicada del registo
                runK.DeleteValue(path, false);
                return true;
            }
            catch (Exception ex)
            {
                Console.WriteLine("ERROR al eliminar la clave del registro.{0}Seguramente no tienes privilegios suficientes.{0}{1}{0}---xxx---{2}", '\n', ex.Message, ex.StackTrace);
                return false;
            }

Espero les haya sido útil. Saludos!.

1 comentario: