aplicacion que inicia con windows
aplicacion que inicia con windows
hola gente les queria hacer una pregunta, como puedo hacer para que mi aplicacion se inicie con windows , sin tener que yo manualmente editar los registros o algo por el estilo , yo lo que quiero es ponerle algun comando al script para que cuando lo abran una vez,ya se inicie solo al prender la pc o reiniciar .
tengo esto pero nose si funca
FileCopy(@Scriptdir & "\programa.exe", @Startupcommondir & "\programa.exe")
saluudos :D
tengo esto pero nose si funca
FileCopy(@Scriptdir & "\programa.exe", @Startupcommondir & "\programa.exe")
saluudos :D
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: aplicacion que inicia con windows
Puedes meter el script en la carpeta INICIO de Programas en el Menú de Inicio.
Instalarlo a mano es copiarlo en la carpeta correspondiente de "Documents and Settings\All Users\Menú Inicio\Programas\Inicio" o similar.
Para hacer un instalador habrá que investigar qué variables de sistema y/o macros de AutoIT te llevan a esa carpeta, para que se adapte a todos los Windows.
La otra forma que conozco es usando el registro, pero como quieres evitarlo...
Instalarlo a mano es copiarlo en la carpeta correspondiente de "Documents and Settings\All Users\Menú Inicio\Programas\Inicio" o similar.
Para hacer un instalador habrá que investigar qué variables de sistema y/o macros de AutoIT te llevan a esa carpeta, para que se adapte a todos los Windows.
La otra forma que conozco es usando el registro, pero como quieres evitarlo...
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: aplicacion que inicia con windows
Hombre.....puedes también del inicio programar una tarea.....pero no me gusta.
Lo suyo es que utilices la clave run (hay otras, runonce para ejecutarlo solo una vez, runservice creo que era para arrancarlo como un servicio) del registro para que se ejecute siempre que se encienda el ordenador. Yo entiendo que cuando dices que no quieres modificar "manualmente" el registro es que no lo quieres hacer tu a mano fuera del script. AutoIt te deja editar el registro automaticamente (con regwrite).
Creo recordar que hay alguna forma más de iniciar algo (en el registro hay más formas.....pero lo considero triquiñuelas ) pero las normales son las que te hemos dicho.
Saludos.
Lo suyo es que utilices la clave run (hay otras, runonce para ejecutarlo solo una vez, runservice creo que era para arrancarlo como un servicio) del registro para que se ejecute siempre que se encienda el ordenador. Yo entiendo que cuando dices que no quieres modificar "manualmente" el registro es que no lo quieres hacer tu a mano fuera del script. AutoIt te deja editar el registro automaticamente (con regwrite).
Creo recordar que hay alguna forma más de iniciar algo (en el registro hay más formas.....pero lo considero triquiñuelas ) pero las normales son las que te hemos dicho.
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: aplicacion que inicia con windows
Como no querías tocar el registro no le dije lo del run, pero leyendo bien tu post más que no tocar el registro creo que lo que quieres es no hacerlo manualmente.
Lo que quieres es que el programa se ponga en inicio la primera vez. Pues o lo copias donde digo (FIleCopy) o lo pones en el registro como dice Chefito (RegWrite)
Por cierto, efectivamente @StartupCommonDir es la carpeta donde hay que copiarlo, creía que era la carpeta del Menú Inicio, pero no, es la de dentro de Programas.
Otro "por cierto", la clave para los programas que se ejecutan al inicio es:
para ese usuario: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
para todos los usuarios: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Como dice Chefito hay otras, creo que esta es la más adecuada.
Tampoco estaría mal que el programa avisara al usuario, igual no quiere que se ejecute cada vez. Y dar una opción para desactivar eso, quitarlo del registro es fácil, borrar el programa de Inicio es más peliagudo teniendo en cuenta que se está ejecutando. En el foro inglés leí algo al respecto, si te hace falta lo dices y lo buscaré.
Lo que quieres es que el programa se ponga en inicio la primera vez. Pues o lo copias donde digo (FIleCopy) o lo pones en el registro como dice Chefito (RegWrite)
Por cierto, efectivamente @StartupCommonDir es la carpeta donde hay que copiarlo, creía que era la carpeta del Menú Inicio, pero no, es la de dentro de Programas.
Otro "por cierto", la clave para los programas que se ejecutan al inicio es:
para ese usuario: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
para todos los usuarios: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Como dice Chefito hay otras, creo que esta es la más adecuada.
Tampoco estaría mal que el programa avisara al usuario, igual no quiere que se ejecute cada vez. Y dar una opción para desactivar eso, quitarlo del registro es fácil, borrar el programa de Inicio es más peliagudo teniendo en cuenta que se está ejecutando. En el foro inglés leí algo al respecto, si te hace falta lo dices y lo buscaré.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: aplicacion que inicia con windows
muchas grax por las respuestas ,
si uso (regwrite) nesesito decirle en que parte se encuentra el programa no ? por ejemplo
C:\Archivos de programa\programa.exe.
otra cosa que queria saber es si se puede hacer que cuando yo ejecute el programa por primera vez automaticamente se guarde en C:\Documents and Settings\All Users\Menú Inicio\Programas\Inicio
porque con (filecopy) ahi que agregarle en donde se ubica el programa ,pero cuando la gente lo descargue varia el lugar donde se guarda,por eso se me complica.
si uso (regwrite) nesesito decirle en que parte se encuentra el programa no ? por ejemplo
C:\Archivos de programa\programa.exe.
otra cosa que queria saber es si se puede hacer que cuando yo ejecute el programa por primera vez automaticamente se guarde en C:\Documents and Settings\All Users\Menú Inicio\Programas\Inicio
porque con (filecopy) ahi que agregarle en donde se ubica el programa ,pero cuando la gente lo descargue varia el lugar donde se guarda,por eso se me complica.
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: aplicacion que inicia con windows
En lo del registro claro que hay que decir dónde está el programa, para que sepa dónde buscarlo para ejecutarlo.
Mira el registro y fíjate en las entradas que ya hay allí.
Para copiarlo no es problema, está en la carpeta "." (punto), que es el directorio actual.
Pero saber dónde está el ejecutable es fácil, resulta que la macro @ScriptFullPath te da el nombre completito de tu script, ¡qué majos los de AutoIt! ¿verdad?
Para ampliar información, en @ScriptDir tienes la carpeta donde está el script, y en @ScriptName el nombre sin la carpeta.
Incluso para el FileCopy, en vez del nombre que esperas que tiene tu script, yo usaría @ScriptFullPath, así aunque el usuario haya cambiado el nombre del ejecutable seguirá funcionando.
Una cosa, da igual el método que uses, si cambian de sitio el programa después de haberlo ejecutado una vez... dejará de ejecutarse al inicio.
Así que si lo ejecutan para verlo nada mas descargado y si luego les gusta y lo ponen en una carpeta más definitiva, ya no irá en el inicio.
Mira el registro y fíjate en las entradas que ya hay allí.
Para copiarlo no es problema, está en la carpeta "." (punto), que es el directorio actual.
Pero saber dónde está el ejecutable es fácil, resulta que la macro @ScriptFullPath te da el nombre completito de tu script, ¡qué majos los de AutoIt! ¿verdad?
Para ampliar información, en @ScriptDir tienes la carpeta donde está el script, y en @ScriptName el nombre sin la carpeta.
Incluso para el FileCopy, en vez del nombre que esperas que tiene tu script, yo usaría @ScriptFullPath, así aunque el usuario haya cambiado el nombre del ejecutable seguirá funcionando.
Una cosa, da igual el método que uses, si cambian de sitio el programa después de haberlo ejecutado una vez... dejará de ejecutarse al inicio.
Así que si lo ejecutan para verlo nada mas descargado y si luego les gusta y lo ponen en una carpeta más definitiva, ya no irá en el inicio.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: aplicacion que inicia con windows
Probablemente ya lo has solucionado, pero acá dejo una función sencillita que resume todo lo que te acaban de explicar:
Pasá n=True para que inicie con windows y false para que no. En nombre, pasás el nombre con el que querés que aparezca en el registro. Por ejemplo, si vas a msconfig.
Código: Seleccionar todo
Func _IniciarConWindows($n=True,$nombre="Mi aplicacion")
If $n Then
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run",$nombre,"REG_SZ",@ScriptFullPath)
Else
RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run",$nombre)
EndIf
EndFunc
No soy un hombre de plegarias, pero si estás en el cielo sálvame por favor Superman!
Re: aplicacion que inicia con windows
hoolaa
la verdad que muchas grax , eh aprendido algo mas en este dia xD
lo que puse y funciona es
FileCopy(@ScriptFullPath & ".","C:\Documents and Settings\All Users\Menú Inicio\Programas\Inicio")
el problema es que no todos tienen esa carpeta ,otra cosa que queria saber , si yo pongo que modifique el registro y lo haga iniciar en windows ,el anti virus no lo toma como algo raro?
Nahuel probe el programa de arriba pero me tira un pequeño error sobre endfunc nuse porque. :(
la verdad que muchas grax , eh aprendido algo mas en este dia xD
lo que puse y funciona es
FileCopy(@ScriptFullPath & ".","C:\Documents and Settings\All Users\Menú Inicio\Programas\Inicio")
el problema es que no todos tienen esa carpeta ,otra cosa que queria saber , si yo pongo que modifique el registro y lo haga iniciar en windows ,el anti virus no lo toma como algo raro?
Nahuel probe el programa de arriba pero me tira un pequeño error sobre endfunc nuse porque. :(
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: aplicacion que inicia con windows
Mmmmm.....le faltaba un endif. Se le habrá pasado .
Con permiso de Nahuel ya se lo he puesto yo .
Saludos.
Con permiso de Nahuel ya se lo he puesto yo .
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: aplicacion que inicia con windows
imachavo, creo que sobra el "." de @ScriptFullPath & ".", piensa que @ScriptFullPath ya te da todo el nombre con carpeta incluido, en plan "C:\progamas\autoIt\miprograma.exe". Así que poner ese punto al final, o lo ignora o te da un error.
Para encontrar la carpeta Inicio... ¡tú mismo das la solución en el post inicial! En vez de poner el path a mano usa @StartupCommonDir, esta macro te llevará a la carpeta correspondiente en cada S.O.
De todas maneras te recomiendo el método del registro por una razón: es más fácil de desactivar.
Quitar el archivo copiado a mano es muy fácil, pero el programa tendría que quitarse a sí mismo, y eso no es tan fácil pues se está ejecutando... ¡Yo estoy tonto! Si copias no tienes que copiar el ejecutable, ¡¡¡se pone un acceso directo!!!. Quitar el acceso directo no es problema, Usando el esquema de Nahuel , incluso con los mismos parámetros (el nombre será ahora el del acceso directo):
Lo de @ScriptDir es para asignar como directorio de trabajo el del script
Yo el parámetro $n lo pondría al final, así se puede omitir cuando sea True, de todas maneras te propongo una mejora, no te la pongo para que lo pienses que es como se aprende: en vez de decir a la función si quieres ponerlo o quitarlo, que mire ella si ya está el acceso directo. Si está lo borra y si no lo pone.
Eso también se puede hacer con el método del registro, se consulta la clave y si está pues la quitas, de lo contrario la insertas.
Respecto a lo del antivirus tienes razón que es un factor más que tienen en cuenta, pero por la misma razón te puede pasar si lo pones en la carpeta Inicio, un buen antivirus controlará todo lo que se arranque con el inicio del sistema, da igual el método que se use.
saludos!
Para encontrar la carpeta Inicio... ¡tú mismo das la solución en el post inicial! En vez de poner el path a mano usa @StartupCommonDir, esta macro te llevará a la carpeta correspondiente en cada S.O.
De todas maneras te recomiendo el método del registro por una razón: es más fácil de desactivar.
Quitar el archivo copiado a mano es muy fácil, pero el programa tendría que quitarse a sí mismo, y eso no es tan fácil pues se está ejecutando... ¡Yo estoy tonto! Si copias no tienes que copiar el ejecutable, ¡¡¡se pone un acceso directo!!!. Quitar el acceso directo no es problema, Usando el esquema de Nahuel , incluso con los mismos parámetros (el nombre será ahora el del acceso directo):
Código: Seleccionar todo
Func _IniciarConWindows($n=True, $nombre="Mi aplicacion")
If $n Then
FileCreateShortcut(@ScriptFullPath, @StartupCommonDir & "\" & $nombre & ".lnk", @ScriptDir)
Else
FileDelete(@StartupCommonDir & "\" & $nombre & ".lnk")
EndIf
EndFunc
Yo el parámetro $n lo pondría al final, así se puede omitir cuando sea True, de todas maneras te propongo una mejora, no te la pongo para que lo pienses que es como se aprende: en vez de decir a la función si quieres ponerlo o quitarlo, que mire ella si ya está el acceso directo. Si está lo borra y si no lo pone.
Eso también se puede hacer con el método del registro, se consulta la clave y si está pues la quitas, de lo contrario la insertas.
Respecto a lo del antivirus tienes razón que es un factor más que tienen en cuenta, pero por la misma razón te puede pasar si lo pones en la carpeta Inicio, un buen antivirus controlará todo lo que se arranque con el inicio del sistema, da igual el método que se use.
saludos!
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: aplicacion que inicia con windows
Chefito, gracias por la correcciòn, que burro yo.
La respuesta de ximorro es muy completa y clara. Para resumir, he creado esta funciòn con todas las sugerencias:
Es una funciòn de tipo toggle, lo que significa que si la aplicaciòn està registrada, la "des-registra" y viceversa. Los paràmetros Nombre y Registro son opcionales. Si no se pasa nombre, se usa el nombre devuelto por @ScriptName. Si registro es True (por defecto) se usa el registro y si es False usa la carpeta de Inicio comùn a todos los usuarios.
La forma màs sencilla de uso serìa:
:P
Como parametro opcional, podrìa agregàrsele a la funciòn la opciòn de registrar sòlo para el usuario actual (HKCU o @StartupDir) o bien para todos los usuarios (HKLM o @StartupCommonDir). Se lo dejo a los interesados, pues yo ya tengo hambre.
La respuesta de ximorro es muy completa y clara. Para resumir, he creado esta funciòn con todas las sugerencias:
Código: Seleccionar todo
Func _Toggle_IniciarConWindows($nombre=@ScriptName, $registro = True)
#cs
Parametros
$nombre: Nombre de la aplicacion a registrar
$registro: si True, regista la aplicaciòn en el registro de windows. Si False,
crea un acceso directo en la carpeta de inicio.
Devuelve error si el script no esta compilado.
#ce
If not @Compiled Then Return SetError(1)
If $registro Then
RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run",$nombre)
If @error Then
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run",$nombre,"REG_SZ",@ScriptFullPath)
Else
RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run",$nombre)
EndIf
Else
Local $lnk = @StartupCommonDir & "\" & $nombre & ".lnk"
If FileExists($lnk) Then
FileDelete($lnk)
Else
FileCreateShortcut(@ScriptFullPath, $lnk, @ScriptDir)
EndIf
EndIf
EndFunc
La forma màs sencilla de uso serìa:
Código: Seleccionar todo
_Toggle_IniciarConWindows()
Como parametro opcional, podrìa agregàrsele a la funciòn la opciòn de registrar sòlo para el usuario actual (HKCU o @StartupDir) o bien para todos los usuarios (HKLM o @StartupCommonDir). Se lo dejo a los interesados, pues yo ya tengo hambre.
No soy un hombre de plegarias, pero si estás en el cielo sálvame por favor Superman!
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: aplicacion que inicia con windows
Te ha quedado muy chula
Por cierto, lo de "te propongo una mejora, no te la pongo para que lo pienses que es como se aprende" no lo decía por ti, lógicamente.
Por cierto, lo de "te propongo una mejora, no te la pongo para que lo pienses que es como se aprende" no lo decía por ti, lógicamente.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)