Hola, quería hacer un script en vbs, que cree una clave en el registro para ejecutar una aplicación que se guarda en "C:\Documents and Settings\---\Datos de programa", tengo esto escrito...
Dim oReg As Object
Set oReg = CreateObject("Wscript.Shell")
'Definimos las variables necesarias
Dim strRuta As String
strRuta = "Aqui la ruta"
'Escribimos el nuevo valor de la clave
oReg.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run", strRuta, "REG_SZ"
oReg.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", strRuta, "REG_SZ"
'Destruimos la variable de objeto
Set oReg = Nothing
Claro, si pongo una ruta fija solo vale para mi ordenador, ademas, yo tengo Windows XP y para un Windows Vista o Windows 7 no funciona... Podrían decirme como puedo optimizar este script para cualquier S.O??
Saludos
Cita de: MeCraniDOS en 21 Junio 2013, 14:43 PMuna aplicación que se guarda en "C:\Documents and Settings\---\Datos de programa"
strRuta = "Aqui la ruta"
si pongo una ruta fija solo vale para mi ordenador
Podrían decirme como puedo optimizar este script para cualquier S.O??
Usa las variables de entorno de Windows...
strRuta = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") & "\Carpeta\Aplicacion.exe"
WScript.Echo(strRuta)
Saludos.
EDITO: A parte de eso, no estás creando ninguna clave nueva, estás sobreescribiendo el valor por defecto de la clave... tampoco no es necesario escribir la clave en HKCU y HKLM, si la escribes en HKLM afecta a todos los usuarios quedando HKCU innecesaria, eres libre de hacerlo, pero deberías eligir la que más se adapte a tus necesidades.
Aquí tienes:
KeyName = "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\"
ValName = "Mi aplicacion"
ValData = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") & "\Carpeta\Aplicacion.exe"
CreateObject("WScript.Shell").RegWrite KeyName & ValName, ValData
Bueno aquí tienes algunas más.
http://es.wikipedia.org/wiki/Variable_de_entorno#Valores_por_defecto_de_las_variables_de_entorno
Que te ayude Elektro a adaptarlas, porque yo soy un cafre. :xD
Entonces el script quedaría finalmente así?
Dim oReg As Object
Set oReg = CreateObject("Wscript.Shell")
' Definimos las variables necesarias
' Dim strRuta As String
' strRuta = "Aqui la ruta"
KeyName = "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\"
ValName = "Hola.exe"
ValData = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") & "\Carpeta\Aplicacion.exe"
' Escribimos el nuevo valor de la clave
CreateObject("WScript.Shell").RegWrite KeyName & ValName, ValData
' Destruimos la variable de objeto
Set oReg = Nothing
Me da error... no domino mucho la verdad.. :-\ :-\
Cual error? :laugh:
@MeCraniDOS
Te da error porque en VBS no se puede declarar el tipo de variable (Dim
As...), manéjate solo con "Dim" y "Set".
El código quedaría como tal y como te lo puse:
Citar KeyName = "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\"
ValName = "Mi aplicacion"
ValData = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") & "\Carpeta\Aplicacion.exe"
CreateObject("WScript.Shell").RegWrite KeyName & ValName, ValData
Obviamente hay que modificar los valores necesarios... y bueno, si quieres añadirle comentarios a esas lineas o modificarlas un poco eso ya es cosa tuya.
En el último código que has posteado, que es una mezcla de tu code original y del mio, esto está mal:
CitarSet oReg = CreateObject("Wscript.Shell")
ValData = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") & "\Carpeta\Aplicacion.exe"
Ya tienes el objeto instanciado en la variable "oREG", pero en la variable "valdata" lo vuelves a instanciar.
ValData = oReg.ExpandEnvironmentStrings(...)
Aparte de la primera línea:
CitarDim oReg As Object
Bórrala.
EDITO2: y esta otra, que se me ha pasado de largo:
CitarDim strRuta As String
No hay que declarar KeyName, ValName y ValData?? Y "Mi aplicación" y "Aplicación.exe" son las mismas??
Saludos
Cita de: MeCraniDOS en 21 Junio 2013, 17:25 PMNo hay que declarar KeyName, ValName y ValData??
Poder puedes, lo que te digo es que no puedes declarar el tipo de variable (dim var as tipo), en VB si, en VBS NO, de todas formas lo de declarar variables no es necesario a menos que quieras llevar un "control" sobre las variables de tu código usando "Option Explicit".
...En un código tán sencillo y pequeño no hace falta.
http://www.w3schools.com/vbscript/vbscript_variables.asp
http://msdn.microsoft.com/en-us/library/t7zd6etz%28v=vs.84%29.aspx
Cita de: MeCraniDOS en 21 Junio 2013, 17:25 PM"Mi aplicación" y "Aplicación.exe" son las mismas??
"Mi aplicación" es el nombre del valor de la clave de registro.
"Aplicación.exe" es el nombre del executable de la aplicación.
Usa el código que te puse y fíjate en como queda la clave del registro para entenderlo...
Saludos
Vale muchas gracias, lo probare y me fijare como queda :silbar:
Editado
Listo, funciona a la perfección
Saludos