elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [AYUDA] [VBS SCRIPT] Script para registro windows q no m funciona
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [AYUDA] [VBS SCRIPT] Script para registro windows q no m funciona  (Leído 3,230 veces)
Davigotchi

Desconectado Desconectado

Mensajes: 16


Ver Perfil
[AYUDA] [VBS SCRIPT] Script para registro windows q no m funciona
« en: 1 Marzo 2020, 20:20 pm »

Buenas tardes a todos:
He realizado un Script para modificar un valor del registro de Windows, se me hizo complicado por que la CADENA DEL REGISTRO donde se almacena el valor a modificar depende del usuario activo, asiq el Script no puede ser genérico, depende del SID del Usuario Actual.

Código
  1. strComputer = "."
  2. Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
  3.  
  4. Dim USUARIO
  5. Dim DOMINIO
  6. Dim SID
  7.  
  8. Set objshell = createobject("wscript.shell")
  9. USUARIO = objshell.expandenvironmentstrings("%USERNAME%")
  10. DOMINIO = objshell.expandenvironmentstrings("%USERDOMAIN%")
  11.  
  12. Set objAccount = objWMIService.Get _
  13. ("Win32_UserAccount.Name='" & USUARIO & "',Domain='" & DOMINIO & "'")
  14.  
  15. SID = objAccount.SID
  16.  
  17. Msgbox objshell.expandenvironmentstrings(SID)
  18.  
  19. DIM CADENA
  20. CADENA = objshell.expandenvironmentstrings("HKEY_USERS\"&SID&"\Software\Microsoft\Windows\CurrentVersion\BackgroundAccessApplications\GlobalUserDisabled")
  21.  
  22. Msgbox objshell.expandenvironmentstrings(CADENA)
  23.  
  24. On Error Resume Next
  25.  
  26. Set oShell = WScript.CreateObject("WScript.Shell")
  27. dato = oShell.RegRead(CADENA)
  28.  
  29. Msgbox objshell.expandenvironmentstrings(dato)
  30.  
  31. Dim WshShell, bKey
  32. Set WshShell = WScript.CreateObject("WScript.Shell")
  33.  
  34. IF Err.Number <> 0 THEN  'Ha ocurrido un error
  35.  IF Err.Number = -2147024894 THEN
  36.    WshShell.RegWrite "CADENA", 1, "REG_DWORD"
  37. MsgBox ("Opcion 1")
  38.  END IF
  39. WScript.Quit
  40. ELSE                     'Valor encontrado
  41.  IF dato = 0 THEN  
  42.  WshShell.RegWrite "CADENA", 1, "REG_DWORD"
  43.  Msgbox("Opcion2")
  44.  END IF
  45. END IF
  46.  
  47. Msgbox("FIN")

En el código he puesto varios mensajes para ir viendo que todas las variables almacenan los datos correctos... pero las funciones de escribir en el Registro de Windows no me funcionan :( :(

Alguien sabría en que estoy fallando¿?

Muchas gracias por adelantado.


En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.518


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: [AYUDA] [VBS SCRIPT] Script para registro windows q no m funciona
« Respuesta #1 en: 1 Marzo 2020, 21:17 pm »

Hola!

No he probado el script, pero veo que al escribir no usas la variable, sinó una string con el nobre de la variable. Prueba cambiar lo siguiente:

Código
  1. shShell.RegWrite "CADENA", 1, "REG_DWORD"

por

Código
  1. shShell.RegWrite CADENA, 1, "REG_DWORD"

Saludos!


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Davigotchi

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: [AYUDA] [VBS SCRIPT] Script para registro windows q no m funciona
« Respuesta #2 en: 1 Marzo 2020, 21:34 pm »

Buenas tardes:

Si señor!!! Cuanta razón... ya funciona, fallo mio xD
Muchas gracias :) .
Pero ahora quiero después de ese IF montar otro pero no se en que fallo ahora :( ...

Código
  1. strComputer = "."
  2. Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
  3.  
  4. Dim USUARIO
  5. Dim DOMINIO
  6. Dim SID
  7.  
  8. Set objshell = createobject("wscript.shell")
  9. USUARIO = objshell.expandenvironmentstrings("%USERNAME%")
  10. DOMINIO = objshell.expandenvironmentstrings("%USERDOMAIN%")
  11.  
  12. Set objAccount = objWMIService.Get _
  13. ("Win32_UserAccount.Name='" & USUARIO & "',Domain='" & DOMINIO & "'")
  14.  
  15. SID = objAccount.SID
  16.  
  17. Msgbox objshell.expandenvironmentstrings(SID)
  18.  
  19. DIM CADENA
  20. CADENA = objshell.expandenvironmentstrings("HKEY_USERS\"&SID&"\Software\Microsoft\Windows\CurrentVersion\BackgroundAccessApplications\GlobalUserDisabled")
  21.  
  22. Msgbox objshell.expandenvironmentstrings(CADENA)
  23.  
  24. DIM CADENA2
  25. CADENA2 = objshell.expandenvironmentstrings("HKEY_USERS\"&SID&"\Control Panel\International\User Profile\HttpAcceptLanguageOptOut")
  26.  
  27. Msgbox objshell.expandenvironmentstrings(CADENA2)
  28.  
  29. On Error Resume Next
  30.  
  31. Set oShell = WScript.CreateObject("WScript.Shell")
  32. dato = oShell.RegRead(CADENA)
  33.  
  34. Msgbox objshell.expandenvironmentstrings(dato)
  35.  
  36. DIM WshShell
  37. Set WshShell = WScript.CreateObject("WScript.Shell")
  38.  
  39. IF Err.Number <> 0 THEN  'Ha ocurrido un error
  40.  IF Err.Number = -2147024894 THEN
  41.    WshShell.RegWrite CADENA, 1, "REG_DWORD"
  42. MsgBox ("Opcion 1")
  43.  END IF
  44. WScript.Quit
  45. ELSE                     'Valor encontrado
  46.  IF dato = 0 THEN  
  47.  WshShell.RegWrite CADENA, 1, "REG_DWORD"
  48.  Msgbox("Opcion2")
  49.  END IF
  50. END IF
  51.  
  52. DIM WshShell2
  53. Set oShell = WScript.CreateObject("WScript.Shell")
  54. dato2 = oShell.RegRead(CADENA)
  55.  
  56. Msgbox objshell.expandenvironmentstrings(dato2)
  57.  
  58. Set WshShell2 = WScript.CreateObject("WScript.Shell")
  59.  
  60. IF Err.Number <> 0 THEN  'Ha ocurrido un error
  61.  IF Err.Number = -2147024894 THEN
  62.    WshShell2.RegWrite CADENA2, 1, "REG_DWORD"
  63. MsgBox ("Opcion 1_2")
  64.  END IF
  65. WScript.Quit
  66. ELSE                     'Valor encontrado
  67.  IF dato2 = 0 THEN  
  68.  WshShell2.RegWrite CADENA2, 1, "REG_DWORD"
  69.  Msgbox("Opcion2_2")
  70.  END IF
  71. END IF
  72.  
  73.  
  74. Msgbox("FIN")

Derspues de este comando:
Msgbox objshell.expandenvironmentstrings(dato2)
Me muestra el valor correspondiente pero no se ejecuta nada más... pasa directamente al mensaje:
Msgbox("FIN")

Alguien sabe que se me está pasando¿?

Gracias de nuevo. ;)
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: [AYUDA] [VBS SCRIPT] Script para registro windows q no m funciona
« Respuesta #3 en: 2 Marzo 2020, 01:20 am »

Citar
CADENA = objshell.expandenvironmentstrings("HKEY_USERS\"&SID&"\Software\Microsoft\Windows\CurrentVersion\BackgroundAccessApplications\GlobalUserDisabled")
 
CADENA2 = objshell.expandenvironmentstrings("HKEY_USERS\"&SID&"\Control Panel\International\User Profile\HttpAcceptLanguageOptOut")

Tienes mal formadas las cadenas...
Las cadenas se concatenan con ' & ', es decir debe haber un espacio a ambos lados del ampersand (no he probado, nada simplemente viendo ese error de sintaxis y debajo un 'on error resume next', no he mirado nada más).

El tratamiento de errores, no debe ser así. Se pone cuando se cree posible que pueda suceder un error y tras la instrucción que cabría haber un errror se le interroga: If err.number <> 0 .... es decir se pone justo delante de donde cree que podría darse un error y en tal caso estás obligado a preguntarle inmediatamente después, si no para qué ponerlo???... tampoco tiene sentido ponerlo en otro sitio si se espera que un error pueda suceder en la línea x, debe preceder a la línea x... indistintamente de que tú luego cometas otros errores. Además errores de sintaxis, no son correctos que lleven un tratamiento de error, para eso está el IDE, si no el código no tendría fin, porque con cada variable se puede cometer errores.


Parece que la gente prefiere usar el bloc de notas, a causa de las idioteces de las películas...: Aunque estés operando con VBScript, usa el IDE de VB6, para editar tus scripts...
Simplemente abre un proyecto, elimina el formulario, añade un módulo escribe una función "Sub Main", escribe dentro tu código, en propiedades del proyecto dile que arranca desde 'Main'...
...y así podrás probar tus scripts si funcionan o no, como mínimo te marcará errores tontos como este con la sintaxis... y cuando algo falle, ejecutas paso a paso (tecla de función 'F8')... el debugger de VB6 es muy potente... Y una vez que esté correcto, ya lo guardas donde quieras...

en la imagen se ve la ayuda y una de las 'cadena's corregidas...
En línea

Davigotchi

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: [AYUDA] [VBS SCRIPT] Script para registro windows q no m funciona
« Respuesta #4 en: 2 Marzo 2020, 09:26 am »

Buenos días:

Muchisimas gracias por tus consejos :) ya los estoy aplicando ;) .

Finalmente ya me funciona solamente tenía mal la llamada a una variable en el último IF ya q llamaba a CADENA cuando tendría que llamar a CADENA2, un fallo tonto.

Muchas gracias nuevamente, poco a poco gracias a todos vosotros estoy aprendiendo un poco de este mundo xD .
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
SCRIPT PHP REGISTRO DE USUARIOS
PHP
emofilicox 2 3,818 Último mensaje 18 Julio 2007, 14:23 pm
por vicmarcal
[shell script] ayuda con script, :( « 1 2 »
Scripting
dark_fidodido 14 11,434 Último mensaje 16 Septiembre 2009, 10:28 am
por dark_fidodido
Script para registro « 1 2 »
Programación Visual Basic
canario77 18 7,518 Último mensaje 4 Octubre 2009, 18:17 pm
por seba123neo
[Script]Script para calcular offset de un ejectuable
Ingeniería Inversa
.:UND3R:. 4 5,132 Último mensaje 29 Septiembre 2011, 16:13 pm
por .:UND3R:.
[Shell script] Un pequeño script para ver temperaturas.
Scripting
manute_powa 3 5,979 Último mensaje 7 Enero 2012, 02:18 am
por manute_powa
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines