Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: MeCraniDOS en 21 Junio 2013, 14:43 pm



Título: [VBS] Script Basico
Publicado por: MeCraniDOS en 21 Junio 2013, 14:43 pm
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...

Código
  1. Dim oReg As Object
  2. Set oReg = CreateObject("Wscript.Shell")
  3.  
  4. 'Definimos las variables necesarias
  5. Dim strRuta As String
  6. strRuta = "Aqui la ruta"
  7.  
  8. 'Escribimos el nuevo valor de la clave
  9. oReg.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run", strRuta, "REG_SZ"
  10.  
  11. oReg.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", strRuta, "REG_SZ"
  12.  
  13. 'Destruimos la variable de objeto
  14. 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


Título: Re: [VBS] Script Basico
Publicado por: Eleкtro en 21 Junio 2013, 15:48 pm
una aplicación que se guarda en "C:\Documents and Settings\---\Datos de programa"
Código
  1. 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...

Código
  1. strRuta = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") & "\Carpeta\Aplicacion.exe"
  2. 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:

Código
  1. KeyName = "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\"
  2. ValName = "Mi aplicacion"
  3. ValData = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") & "\Carpeta\Aplicacion.exe"
  4.  
  5. CreateObject("WScript.Shell").RegWrite KeyName & ValName, ValData


Título: Re: [VBS] Script Basico
Publicado por: z3nth10n en 21 Junio 2013, 15:53 pm
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


Título: Re: [VBS] Script Basico
Publicado por: MeCraniDOS en 21 Junio 2013, 16:34 pm
Entonces el script quedaría finalmente así?

Código
  1. Dim oReg As Object
  2. Set oReg = CreateObject("Wscript.Shell")
  3.  
  4. ' Definimos las variables necesarias
  5. ' Dim strRuta As String
  6. ' strRuta = "Aqui la ruta"
  7.  
  8. KeyName = "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\"
  9. ValName = "Hola.exe"
  10. ValData = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") & "\Carpeta\Aplicacion.exe"
  11.  
  12. ' Escribimos el nuevo valor de la clave
  13.  
  14. CreateObject("WScript.Shell").RegWrite KeyName & ValName, ValData
  15.  
  16.  
  17. ' Destruimos la variable de objeto
  18. Set oReg = Nothing

Me da error... no domino mucho la verdad..  :-\ :-\


Título: Re: [VBS] Script Basico
Publicado por: z3nth10n en 21 Junio 2013, 16:40 pm
Cual error? :laugh:


Título: Re: [VBS] Script Basico
Publicado por: Eleкtro en 21 Junio 2013, 17:03 pm
@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
Código
  1.    KeyName = "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\"
  2.    ValName = "Mi aplicacion"
  3.    ValData = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") & "\Carpeta\Aplicacion.exe"
  4.  
  5.    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:
Citar
Código
  1. Set oReg = CreateObject("Wscript.Shell")
  2. 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.
Código:
ValData = oReg.ExpandEnvironmentStrings(...)

Aparte de la primera línea:
Citar
Código
  1. Dim oReg As Object
Bórrala.

EDITO2: y esta otra, que se me ha pasado de largo:
Citar
Código
  1. Dim strRuta As String


Título: Re: [VBS] Script Basico
Publicado por: MeCraniDOS en 21 Junio 2013, 17:25 pm
No hay que declarar KeyName, ValName y ValData?? Y "Mi aplicación" y "Aplicación.exe" son las mismas??

Saludos


Título: Re: [VBS] Script Basico
Publicado por: Eleкtro en 21 Junio 2013, 17:48 pm
No 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

"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


Título: Re: [VBS] Script Basico
Publicado por: MeCraniDOS en 21 Junio 2013, 17:58 pm
Vale muchas gracias, lo probare y me fijare como queda :silbar:

Editado

Listo, funciona a la perfección

Saludos