Bath - Guardar en una variable un valor de una clave de registro

Iniciado por nhaalclkiemr, 22 Marzo 2007, 17:14 PM

0 Miembros y 1 Visitante están viendo este tema.

nhaalclkiemr

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:

reg export "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" temp.tmp
type temp.tmp | find "shell" > cadena_encontrada.tmp
for /f %%A IN (cadena_encontrada.tmp) DO set VARIABLE=%%A


Pero a mi no me funcionó, si alguien pudiera corregirlo o sabe como hacerlo lo agradecería mucho.

Gracias y un saludo ;) ;) ;) ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

sirdarckcat

escribe en la consola..
REG /?

eso saca todos los argumentos que acepta REG.. sino
www.computerhope.com/reg.htm

Saludos!!

nhaalclkiemr

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 ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

sirdarckcat

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


sirdarckcat


ne0x

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 " = "

nhaalclkiemr

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.

reg export "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" "temp.tmp"

-Ahora tengo un archivo así:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
"nod32kui"="\"C:\\Archivos de programa\\Eset\\nod32kui.exe\" /WAITSERVICE"
"Gainward"="C:\\Archivos de programa\\XpertVision\\TBPanel.exe /A"
"NvCplDaemon"="RUNDLL32.EXE C:\\WINDOWS\\system32\\NvCpl.dll,NvStartup"
"NvMediaCenter"="RUNDLL32.EXE C:\\WINDOWS\\system32\\NvMcTray.dll,NvTaskbarInit"
"amd_dc_opt"="C:\\Archivos de programa\\AMD\\Dual-Core Optimizer\\amd_dc_opt.exe"

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\OptionalComponents]

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\OptionalComponents\IMAIL]
"Installed"="1"

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\OptionalComponents\MAPI]
"Installed"="1"
"NoChange"="1"

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\OptionalComponents\MSFS]
"Installed"="1"



-Ahora con el FOR, el TYPE y el FIND busco la linea llamada "amd_dc_opt"

type temp.tmp | find "amd_dc_opt" > cadena_encontrada.tmp
for /f %%A IN (cadena_encontrada.tmp) DO set VARIABLE=%%A
del /S /F /Q /A:- temp.tmp



-Pues ahora tengo la linea :

"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:

"amd_dc_opt"="C:\\Archivos de programa\\AMD\\Dual-Core Optimizer\\amd_dc_opt.exe"

pero en la realidad la variable será:

"amd_dc_opt"="C:\\Archivos



Bueno, espero que me podais ayudar, gracias y un saludo ;) ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%


nhaalclkiemr

Ya lo prové pero no funciona...

Si pones "%%A" despues de FOR /F así:

reg export "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" "temp.tmp"
type temp.tmp | find "amd_dc_opt" > cadena_encontrada.tmp
for /f "%%A" IN (cadena_encontrada.tmp) DO set a=%%A
del /S /F /Q /A:- temp.tmp


da un error:

No se esperaba IN en este momento.


Si pones "%%A" en SET a="%%A" asi:

reg export "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" "temp.tmp"
type temp.tmp | find "amd_dc_opt" > cadena_encontrada.tmp
for /f %%A IN (cadena_encontrada.tmp) DO set a="%%A"
del /S /F /Q /A:- temp.tmp


lo que va a pasar es que la salida en vez de ser asi:

"amd_dc_opt"="C:\\Archivos

va a ser así:

""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 ;) ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%