Título: Bath - Guardar en una variable un valor de una clave de registro Publicado por: nhaalclkiemr en 22 Marzo 2007, 17:14 pm Bien, como no hay sección Bath en este foro lo pongo aki pork servirá para troyanos...
He encontrado por internet una manera de hacer "if exist" a una clave del registro usando los comandos "reg export","find" y "for" en ese orden. Primero exporta el registro a un archivo, en ese archivo busca si existe un valor, si existe establece con el "for" la variable 1 o 0 segun sea falso o verdadero k existe... Pues bien...yo quiero hacer algo parecido, en vez de buscar si una clave existe o no, lo que quiero es poder guardar en una variable el valor de una clave del registro. Supongo que se podrá hacer de manera parecida a lo anterior...por eso lo pongo...sin embargo yo no se usar bien el comando "for" por eso quería que me ayudarais... En otro lado me dieron este bath: Código: reg export "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" temp.tmp Pero a mi no me funcionó, si alguien pudiera corregirlo o sabe como hacerlo lo agradecería mucho. Gracias y un saludo ;) ;) ;) ;) Título: Re: Bath - Guardar en una variable un valor de una clave de registro Publicado por: sirdarckcat en 27 Marzo 2007, 02:35 am escribe en la consola..
REG /? eso saca todos los argumentos que acepta REG.. sino www.computerhope.com/reg.htm Saludos!! Título: Re: Bath - Guardar en una variable un valor de una clave de registro Publicado por: nhaalclkiemr en 30 Marzo 2007, 16:24 pm No me entiendes, ya se usar el reg. Lo que quiero es ex`prtar el registro a un archivo, despues busco una clave en concreto, y almaceno en una variable el valor de esa clave
esto lo hago pork no existe ningun parametro para reg que te permita exportar el valor de una clave. un saludo ;) Título: Re: Bath - Guardar en una variable un valor de una clave de registro Publicado por: sirdarckcat en 30 Marzo 2007, 23:10 pm claro que si existe.. no te conteste en ese mmento porque no tenia tiempo, pero si te fijas en los links que puse, hubieras visto.. xD
reg export HKLM\Software\Microsoft\Windows\CurrentVersion\Run "c:\ex.reg" eso funciona en WIN XP SP1, SP2 Pro y Home Título: Re: Bath - Guardar en una variable un valor de una clave de registro Publicado por: ne0x en 31 Marzo 2007, 20:40 pm Na, que sigues sin entender...
Es cojer el valor de una cadena y guardarlo en una variable. Título: Re: Bath - Guardar en una variable un valor de una clave de registro Publicado por: sirdarckcat en 1 Abril 2007, 02:51 am tu sigues sin entender..
de ahi con un for lo sacas.. Título: Re: Bath - Guardar en una variable un valor de una clave de registro Publicado por: ne0x en 1 Abril 2007, 12:00 pm Si, con el FOR saco la variable:
"nombre_de_cadena"="valor_cadena" Hago un set variable=%variable:"=% Y sale asi: nombre_de_cadena=valor_cadena Ahhh !! se me acaba de ocurrir un metodo para sacar solo lo que hay a la derecha del igual. En un bucle cojemos y quitamos el primer caracter, si el caracter que hemos quitado es un "=" paramos, y si no quitamos el segundo caracter y hacemos lo mismo. Entonces sacamos solo la parte que hay a la derecha del " = " Título: Re: Bath - Guardar en una variable un valor de una clave de registro Publicado por: nhaalclkiemr en 2 Abril 2007, 21:09 pm A ver, la idea es esa:
Imaginaros que quiero guardar el valor de la clave "amd_dc_opt" que está en "HKLM\Software\Microsoft\Windows\CurrentVersion\Run". El valor es "C:\Archivos de programa\AMD\Dual-Core Optimizer\amd_dc_opt.exe" Todo esto sin las comillas claro... -Primero con reg export guardo en un archivo de texto plano las entradas por ejemplo de "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" Eso lo se hacer. Código: reg export "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" "temp.tmp" -Ahora tengo un archivo así: Código: Windows Registry Editor Version 5.00 -Ahora con el FOR, el TYPE y el FIND busco la linea llamada "amd_dc_opt" Código: type temp.tmp | find "amd_dc_opt" > cadena_encontrada.tmp -Pues ahora tengo la linea : Código: "amd_dc_opt"="C:\\Archivos de programa\\AMD\\Dual-Core Optimizer\\amd_dc_opt.exe" Eso lo tengo en un archivo "cadena_encontrada.tmp" y en una variable %%A Ahora habría que hacer lo que dice ne0x...quedarse solo con el valor y quitar el "amd_dc_opt"= Ahora los principales problemas son: -Aunke consigamos quedarnos solo con el valor, los simbolos \ aparecen como \\ -Si hay algun espacio, la variable solo coje hasta el espacio, prové a poner comillas pero no se donde las tengo que poner... Por ejemplo, en el ejemplo anterior que puse yo la linea teorica que es %%A es: Código: "amd_dc_opt"="C:\\Archivos de programa\\AMD\\Dual-Core Optimizer\\amd_dc_opt.exe" pero en la realidad la variable será: Código: "amd_dc_opt"="C:\\Archivos Bueno, espero que me podais ayudar, gracias y un saludo ;) ;) Título: Re: Bath - Guardar en una variable un valor de una clave de registro Publicado por: ne0x en 3 Abril 2007, 00:10 am Y si ponemos "%%A" ??.
Título: Re: Bath - Guardar en una variable un valor de una clave de registro Publicado por: nhaalclkiemr en 4 Abril 2007, 16:00 pm Ya lo prové pero no funciona...
Si pones "%%A" despues de FOR /F así: Código: reg export "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" "temp.tmp" da un error: Código: No se esperaba IN en este momento. Si pones "%%A" en SET a="%%A" asi: Código: reg export "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" "temp.tmp" lo que va a pasar es que la salida en vez de ser asi: Código: "amd_dc_opt"="C:\\Archivos va a ser así: Código: ""amd_dc_opt"="C:\\Archivos" Yo pienso que usando delims, tokens, etc... que se podría hacer, pero no se utilizar esos parámetros del FOR Pues aun nos queda pendiente el tema ese de los espacios y tambien el tema de transformar las barras dobles \\ en una barra sola \ Weno, pues haber si alguien me puede ayudar... Un saludo ;) ;) Título: Re: Bath - Guardar en una variable un valor de una clave de registro Publicado por: nhaalclkiemr en 9 Abril 2007, 22:31 pm ¿¿Alguien puede ayudar con el problema de convertir las barras dobles // en barras simples / y el problema de los espacios??
:huh: :huh: :huh: Venga, espero vuestra ayuda, quería resolver el tema principal de este post pronto... Venga, saludos ;) ;) Título: Re: Bath - Guardar en una variable un valor de una clave de registro Publicado por: sirdarckcat en 10 Abril 2007, 02:07 am Código: @echo off Título: Re: Bath - Guardar en una variable un valor de una clave de registro Publicado por: nhaalclkiemr en 10 Abril 2007, 20:23 pm Magnifico Sirdarckat, ahora solo me queda una pregunta...
¿A k viene este IF?: Código: if "%PP:~-14%"=="amd_dc_opt.exe" ( No se para que sirve... He hecho este BATCH gracias a tu ayuda y pienso que funciona correctamente: Código: @echo off El valor de "NOMBRE_CLAVE" queda perfectamente definido en la variable %PP% y ademas, le he añadido un control de errores que en caso de que "NOMBRE_CLAVE" o "RUTA_CLAVE" no existan te lleva a la etiqueta :error en la que puedes poner un BATCH diferente. Por ejemplo, en nuestro caso sería: Código: @echo off Ahora ya tenemos lo que queremos, pienso que el tema quedo zanjado, gracias ne0x y sobre todo Sirdarckat. :xD :xD Un saludo ;) ;) Título: Re: Bath - Guardar en una variable un valor de una clave de registro Publicado por: sirdarckcat en 10 Abril 2007, 20:40 pm ahh el if era para que el for parseara el .reg y no tuvieras que hacer el pipe al find..
pero es lo mismo :P que bien que ya pudiste Saludos!! |