Iniciar una aplicación con Windows

Poniendo el ejecutable en el registro de Windows usando la clase cQueryReg

 

Publicado el  14/May/2004
Revisión del 14/May/2004
Autor: Guillermo 'guille' Som



Debido a que he recibido varios comentarios de cómo usar de forma práctica la clase cQueryReg, con la que podemos manejar el registro de Windows, voy a empezar a poner algunos ejemplos de cómo usarla, y en esta ocasión será para poder poner nuestra aplicación en el Inicio de Windows, de forma que al iniciarse la sesión de un usuario, nuestra aplicación también se inicie.
Por supuesto estoy hablando de incluir nuestra aplicación dentro del propio registro de Windows, no del menú de inicio de la carpeta de programas.

La clave en la que se incluirá será en:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Si a esta clave añadimos una nueva entrada (o valor) de tipo String que apunte a nuestro ejecutable, éste se iniciará junto con el Sistema Operativo.

Para facilitar las cosas, usaremos la clase cQueryReg que nos servirá para manipular el registro.
Por supuesto, si usamos las funciones del API que en dicha clase se utilizan, no necesitaremos usar la clase... pero de lo que se trata es de "reutilizar" algo que ya está hecho, y eso es lo que vamos a hacer.

Más abajo podrás bajarte un ejecutable que hará tres cosas:
-Comprobar si una aplicación está ya en esa clave
-Añadir una aplicación a la clave Run
-Quitar nuestra aplicación para que no se inicie con Windows

Veamos qué código habría que usar para cada una de esas acciones.

Preparativos o valores usados en estos ejemplos:
Te recuerdo que en nuestro proyecto tendremos añadida la clase cQueryReg, que en el código que te mostraré la tengo declarada como mReg.
También tengo una constante (cvRun) con el valor de la clave que queremos manipular, en este caso, estas serían las declaraciones de estas dos variables:

Private mReg As cQueryReg
Private Const cvRun As String = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\"

Además de estas declaraciones, se utilizan dos cajas de texto, una de ellas con el nombre del valor que queremos añadir (txtClave) y el otro con el nombre del ejecutable (txtExe). Por otro lado, la aplicación también usa una etiqueta (LabelInfo) en la que se mostrará si todo fue bien o no, ya que esto puede que no funcione si no tenemos los privilegios adecuados para poder manipular el registro.

 

Comprobar si una aplicación está ya en el inicio de Windows

' comprobar si la clave ya existe
Dim s As String
'
s = mReg.GetRegString(cvRun, txtClave.Text)
If s <> "" Then
    LabelInfo.Caption = "SI existe la clave indicada" & vbCrLf & s
Else
    LabelInfo.Caption = "NO existe la clave indicada"
End If

 

Añadir una aplicación a la clave Run del registro

' Poner la clave
Dim s As String
'
s = mReg.GetRegString(cvRun, txtClave.Text)
If s <> "" Then
    LabelInfo.Caption = "La clave ya estaba asignada." & vbCrLf & s
Else
    If mReg.SetReg(cvRun, txtClave.Text, txtExe.Text) = ERROR_NONE Then
        LabelInfo.Caption = "La clave se ha asignado correctamente."
    Else
        LabelInfo.Caption = "ERROR al crear la clave."
    End If
End If

 

Quitar nuestra aplicación para que no se inicie con Windows

' Quitar la clave
Dim s As String
'
s = mReg.GetRegString(cvRun, txtClave.Text)
If s <> "" Then
    If mReg.DeleteValue(cvRun, txtClave.Text) = ERROR_NONE Then
        LabelInfo.Caption = "La clave se ha eliminado del registro."
    Else
        LabelInfo.Caption = "ERROR al eliminar la clave."
    End If
Else
    LabelInfo.Caption = "La clave NO estaba creada."
End If

 

Aquí tienes el enlace al código de ejemplo, ExeEnCurrentVersionRun.zip (43.7 KB), en el que se incluye también la clase cQueryReg.

Espero que con esto te resulte más fácil usar la clase cQueryReg o al menos te puede servir cómo poder añadir tu aplicación al registro de Windows para que se inicie automáticamente.

También quiero recordarte que este código es para Visual Basic 6.0 (o anterior a .NET), y si estás buscando cómo hacer esto mismo en Visual Basic .NET o C#, puedes ver este artículo.

Nos vemos.
Guillermo


ir al índice