Discussion:
Borrar valores del Registro
(demasiado antiguo para responder)
Guillermo Puertas
2004-04-23 10:51:21 UTC
Permalink
Hola a todos.
Me gustaría saber cómo se puede escribir un script para eliminar varios
valores del Registro de Windows. O cómo hacerlo con archivos .reg
Ya puestos, además de los valores que es lo que necesito, también me
gustaría saber como se eliminana las claves.
Yggdrasill
2004-04-23 15:51:31 UTC
Permalink
Con archivos .reg seria mas o menos asi:
Añadiendo un guion o signo menos al comienzo de una clave la
eliminara completa, y detras de un valor borrara solo este.
Por ejemplo:

[-HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word]

Elimina la clave (completa) y subclaves que cuelguen de ella.

[HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word]
"UserData"=-

Borrara solamente el valor UserData, respetando el resto de valores y
subclaves.
--
Salud.

Windows User #400.000.000 y pico ;-)
Post by Guillermo Puertas
Hola a todos.
Me gustaría saber cómo se puede escribir un script para eliminar varios
valores del Registro de Windows. O cómo hacerlo con archivos .reg
Ya puestos, además de los valores que es lo que necesito, también me
gustaría saber como se eliminana las claves.
Guillermo Puertas
2004-04-25 11:35:05 UTC
Permalink
Post by Yggdrasill
Añadiendo un guion o signo menos al comienzo de una clave la
eliminara completa, y detras de un valor borrara solo este.
[-HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word]
Elimina la clave (completa) y subclaves que cuelguen de ella.
[HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word]
"UserData"=-
Borrara solamente el valor UserData, respetando el resto de valores y
subclaves.
Gracias por tu ayuda, soluciona mi problema aunque no completamente. A
continuación expongo lo que quiero hacer:

Introducción:
NetAnts es un gestor de descargas (no muy conocido pero que a mí me
gusta mucho) adware, es decir, que tiene un cartel publicitario que se
"alimenta" con Radiate Advertising un programa spyware que se instala al
mismo tiempo que el propio NetAnts y añade algunas entradas en el Registro.
Gracias a un crack se elimina el cartel publicitario. Y manualmente hay
que borrar algunos archivos y entradas del Registro de Windows. De esta
manera, el ordenador queda limpio de spyware y NetAnts funciona normalmente.

El problema:
Una amiga quiere instalarlo, como es bastante profana en esto de la
informática, había pensado realizar un script para automatizar la
eliminación del software espía. Pero resulta que los nombres de los
valores que introduce en el Registro empiezan con C:\WINDOWS\system32\
para Windows XP y supongo que para otros Windows será:
C:\WINNT\system32\. Además de la letra de la unidad (C:, D:,...) que
dependerá de donde tenga instalado el sistema operativo.
Así que he intentado introducir la variable de entorno %systemroot% (que
devuelve exactamente el directrio en el que está instalado el SO que se
está usando) en el nombre del valor pero no ha funcionado.

La solución:
He comenzado este mensaje diciendo que tu ayuda soluciona mi problema
porque la he preguntado qué sistema operativo tiene y en que unidad lo
tiene instalado. Con estos datos y siguiendo tu información es fácil
escribir un archivo de registro (.reg) que elimine los valores indeseados.
Ahora, aunque sea solo por curiosidad me gustaría saber si hay alguna
manera de introducir variables de entorno en los archivos .reg

Otra manera, es que un script genere un archivo .reg con los nombres de
los valores obtenidos con %systemroot% y luego ejecute dicho archivo
.reg. Pero no tengo ni idea de como generar el archivo (no sé crear un
archivo con comandos desde un script). Si mi amiga es profana, yo
tampoco es que sea un gurú.

P.D. Perdón por enrollarme. Y por seguir alargando la cosa con esta posdata.
Yggdrasill
2004-04-25 17:47:52 UTC
Permalink
Antes de nada, decir que no suelo responder a posts en los que se
haga mencion a cracks o similares.
No se puede meter una variable en un .reg directamente.
Pero creo que tampoco sea necesario en tu caso. Se supone que
lo que quieres es eliminar una clave, con lo que te serviria el segundo
ejemplo que te he dado.
Aunque, sinceramente, seria mas adecuado que tu amiga instalase
algun programa anti-spyware.
--
Salud.

Windows User #400.000.000 y pico ;-)
Post by Guillermo Puertas
Gracias por tu ayuda, soluciona mi problema aunque no completamente. A
NetAnts es un gestor de descargas (no muy conocido pero que a mí me
gusta mucho) adware, es decir, que tiene un cartel publicitario que se
"alimenta" con Radiate Advertising un programa spyware que se instala al
mismo tiempo que el propio NetAnts y añade algunas entradas en el Registro.
Gracias a un crack se elimina el cartel publicitario. Y manualmente hay
que borrar algunos archivos y entradas del Registro de Windows. De esta
manera, el ordenador queda limpio de spyware y NetAnts funciona normalmente.
Una amiga quiere instalarlo, como es bastante profana en esto de la
informática, había pensado realizar un script para automatizar la
eliminación del software espía. Pero resulta que los nombres de los
valores que introduce en el Registro empiezan con C:\WINDOWS\system32\
C:\WINNT\system32\. Además de la letra de la unidad (C:, D:,...) que
dependerá de donde tenga instalado el sistema operativo.
Así que he intentado introducir la variable de entorno %systemroot% (que
devuelve exactamente el directrio en el que está instalado el SO que se
está usando) en el nombre del valor pero no ha funcionado.
He comenzado este mensaje diciendo que tu ayuda soluciona mi problema
porque la he preguntado qué sistema operativo tiene y en que unidad lo
tiene instalado. Con estos datos y siguiendo tu información es fácil
escribir un archivo de registro (.reg) que elimine los valores indeseados.
Ahora, aunque sea solo por curiosidad me gustaría saber si hay alguna
manera de introducir variables de entorno en los archivos .reg
Otra manera, es que un script genere un archivo .reg con los nombres de
los valores obtenidos con %systemroot% y luego ejecute dicho archivo
.reg. Pero no tengo ni idea de como generar el archivo (no sé crear un
archivo con comandos desde un script). Si mi amiga es profana, yo
tampoco es que sea un gurú.
P.D. Perdón por enrollarme. Y por seguir alargando la cosa con esta posdata.
Guillermo Puertas
2004-04-25 23:12:51 UTC
Permalink
Post by Yggdrasill
Antes de nada, decir que no suelo responder a posts en los que se
haga mencion a cracks o similares.
Creo que en estos casos más que de un crack, se trata de un parche ya
que una cosa es que el programa muestre publicidad y otra cosa es que te
"ataquen" con programas espías. Por ello, el usar el parche es una
contramedida de seguridad para tapar una vulnerabilidad.

En realidad, el crack lo que hace es eliminar el cartel publicitario,
pero el spyware permanece en el ordenador (aunque creo que desde ese
momento ni sale a Internet ni tampoco recopila información), por lo que
hay que eliminarlo manualmente o con un programa anti-spyware.

De todas maneras también tendría razones para opinar que parche no es
más que un eufemismo: el o los desarrolladores del programa viven de
eso, si no te convence no lo uses, etc.
Post by Yggdrasill
No se puede meter una variable en un .reg directamente.
Supongo que en la inmensa mayoría de los casos no se necesita meter la
variable. Sin embargo, en mi caso sí era necesario.
Post by Yggdrasill
Pero creo que tampoco sea necesario en tu caso. Se supone que
lo que quieres es eliminar una clave, con lo que te serviria el segundo
ejemplo que te he dado.
Primero un aclaración: la necesidad ya no existe, ahora es curiosidad.
Voy a pasarla el NetAnts 1.25 en lugar del 1.24 que era para el que pedí
ayuda. (Con el 1.24 ya lo tenía solucionado sabiendo el SO y la
partición en el que lo tiene instalado.)

En el 1.25 las entradas a borrar en el Registro son claves (con nombres
concretos) y no valores. Lo que no cambia mucho el asunto, lo que lo
cambia es que con el 1.24 los nombres de los valores a eliminar dependen
de la versión de Windows y de la partición en que esté instalado:

En el caso de Windows XP los valores se llaman:

"C:\WINDOWS\system32\adimage.dll"
"C:\WINDOWS\system32\htmdeng.exe"
"C:\WINDOWS\system32\ipcclient.dll"
"C:\WINDOWS\system32\msipcsv.exe"
"C:\WINDOWS\system32\tfde.dll"

Pero para Windows 2000 serían:

"C:\WINNT\system32\adimage.dll", etc.

Y esto si además Windows está instalado en C:, que si estuviera en D: sería:

"D:\WINNT\system32\adimage.dll"

De ahí que en el .reg intentara utilizar la variable %systemroot%, que
devuelve justamente lo que se necesita: el directorio en el que está
instalado el sistema operativo: C:\WINNT, D:\WINDOWS...
Si no se pueden utilizar variables, un .reg no tiene porqué funcionar en
todos lo casos.

En mi mensaje anterior propuse que una forma de hacerlo sería "que un
script genere un archivo .reg con los nombres de los valores obtenidos
con %systemroot% y luego ejecute dicho archivo .reg." Pero no sé como
generar el archivo .reg con un script.
Post by Yggdrasill
Aunque, sinceramente, seria mas adecuado que tu amiga instalase
algun programa anti-spyware.
La información sobre el spyware que instala (carpetas, archivos y
entradas del Registro) la obtuve de Spybot - Search & Destroy. Y el
mismo Spybot se encarga de eliminarlo. (Un argumento más para opinar que
el crack en realidad se trata de un parche).

Estoy completamente de acuerdo contigo sobre que mi amiga debería
instalar Spybot o cualquier otro programa anti-spyware aunque implique
que me tocará explicarle su funcionamiento.
Guillermo Puertas
2004-04-25 23:18:43 UTC
Permalink
Post by Yggdrasill
Antes de nada, decir que no suelo responder a posts en los que se
haga mencion a cracks o similares.
Creo que en estos casos más que de un crack, se trata de un parche ya
que una cosa es que el programa muestre publicidad y otra cosa es que te
"ataquen" con programas espías. Por ello, el usar el parche es una
contramedida de seguridad para tapar una vulnerabilidad.

En realidad, el crack lo que hace es eliminar el cartel publicitario,
pero el spyware permanece en el ordenador (aunque creo que desde ese
momento ni sale a Internet ni tampoco recopila información), por lo que
hay que eliminarlo manualmente o con un programa anti-spyware.

De todas maneras también tendría razones para opinar que parche no es
más que un eufemismo: el o los desarrolladores del programa viven de
eso, si no te convence no lo uses, etc.
Post by Yggdrasill
No se puede meter una variable en un .reg directamente.
Supongo que en la inmensa mayoría de los casos no se necesita meter la
variable. Sin embargo, en mi caso sí era necesario.
Post by Yggdrasill
Pero creo que tampoco sea necesario en tu caso. Se supone que
lo que quieres es eliminar una clave, con lo que te serviria el segundo
ejemplo que te he dado.
Primero un aclaración: la necesidad ya no existe, ahora es curiosidad.
Voy a pasarla el NetAnts 1.25 en lugar del 1.24 que era para el que pedí
ayuda. (Con el 1.24 ya lo tenía solucionado sabiendo el SO y la
partición en el que lo tiene instalado.)

En el 1.25 las entradas a borrar en el Registro son claves (con nombres
concretos) y no valores. Lo que no cambia mucho el asunto, lo que lo
cambia es que con el 1.24 los nombres de los valores a eliminar dependen
de la versión de Windows y de la partición en que esté instalado:

En el caso de Windows XP los valores se llaman:

"C:\WINDOWS\system32\adimage.dll"
"C:\WINDOWS\system32\htmdeng.exe"
"C:\WINDOWS\system32\ipcclient.dll"
"C:\WINDOWS\system32\msipcsv.exe"
"C:\WINDOWS\system32\tfde.dll"

Pero para Windows 2000 serían:

"C:\WINNT\system32\adimage.dll", etc.

Y esto si además Windows está instalado en C:, que si estuviera en D: sería:

"D:\WINNT\system32\adimage.dll"

De ahí que en el .reg intentara utilizar la variable %systemroot%, que
devuelve justamente lo que se necesita: el directorio en el que está
instalado el sistema operativo: C:\WINNT, D:\WINDOWS...
Si no se pueden utilizar variables, un .reg no tiene porqué funcionar en
todos lo casos.

En mi mensaje anterior propuse que una forma de hacerlo sería "que un
script genere un archivo .reg con los nombres de los valores obtenidos
con %systemroot% y luego ejecute dicho archivo .reg." Pero no sé como
generar el archivo .reg con un script.
Post by Yggdrasill
Aunque, sinceramente, seria mas adecuado que tu amiga instalase
algun programa anti-spyware.
La información sobre el spyware que instala (carpetas, archivos y
entradas del Registro) la obtuve de Spybot - Search & Destroy. Y el
mismo Spybot se encarga de eliminarlo. (Un argumento más para opinar que
el crack en realidad se trata de un parche).

Estoy completamente de acuerdo contigo sobre que mi amiga debería
instalar Spybot o cualquier otro programa anti-spyware aunque implique
que me tocará explicarle su funcionamiento.
M4N010
2004-04-25 22:15:52 UTC
Permalink
Guillermo Puertas escribió en mensaje ...
Post by Guillermo Puertas
Una amiga quiere instalarlo, como es bastante profana en esto de la
informática, había pensado realizar un script para automatizar la
eliminación del software espía. Pero resulta que los nombres de los
valores que introduce en el Registro empiezan con C:\WINDOWS\system32\
C:\WINNT\system32\. Además de la letra de la unidad (C:, D:,...) que
dependerá de donde tenga instalado el sistema operativo.
Así que he intentado introducir la variable de entorno %systemroot% (que
devuelve exactamente el directrio en el que está instalado el SO que se
está usando) en el nombre del valor pero no ha funcionado.
Intenta utilizar %windir% en lugar de %systemroot%. Windir indica el
directorio donde está instalado Windows (ya está incluida la unidad donde
está instalado, de modo que lo correcto es poner por ejemplo
"%windir%\system32" y no "C:\%windir%\system32"). Recuerda también que
algunos programas requieren que los nombres largos con espacios de las
carpetas o archivos estén entrecomillados y para que las comillas se
introduzcan en el registro tienes que precederlas en el archivo .reg por una
barra invertida, al igual que deberás hacerlo con la barra invertida que
separa las carpetas en la ruta, por ejemplo:

[HKEY_LOCAL_MACHINE\SOFTWARE\Nombre de clave]
"Valor"="\"C:\\Archivos de programa\\carpeta\\archivo.exe\""
Post by Guillermo Puertas
Otra manera, es que un script genere un archivo .reg con los nombres de
los valores obtenidos con %systemroot% y luego ejecute dicho archivo
.reg. Pero no tengo ni idea de como generar el archivo (no sé crear un
archivo con comandos desde un script). Si mi amiga es profana, yo
tampoco es que sea un gurú.
Se puede hacer por ejemplo un archivo.bat que desinstale completamente el
spyware y ejecute el archivo .reg que hagas, e incluso es fácil programar
una pequeña utilidad que lo haga todo e incluso que se pueda incorporar al
crack que tienes para crackear y eliminar el espía en una sola operación,
pero eso ya sería más adecuado en el grupo de cracks.

Saludos.
M4N010.
Guillermo Puertas
2004-04-25 23:33:44 UTC
Permalink
Perdón pero no había leído el mensaje de M4N010 cuando contesté a
Yggdrasill.
Post by M4N010
Intenta utilizar %windir% en lugar de %systemroot%. Windir indica el
directorio donde está instalado Windows (ya está incluida la unidad donde
está instalado, de modo que lo correcto es poner por ejemplo
"%windir%\system32" y no "C:\%windir%\system32"). Recuerda también que
algunos programas requieren que los nombres largos con espacios de las
carpetas o archivos estén entrecomillados y para que las comillas se
introduzcan en el registro tienes que precederlas en el archivo .reg por una
barra invertida, al igual que deberás hacerlo con la barra invertida que
[HKEY_LOCAL_MACHINE\SOFTWARE\Nombre de clave]
"Valor"="\"C:\\Archivos de programa\\carpeta\\archivo.exe\""
Haré pruebas con %windir% aunque me temo que como dice Yggdrasill: "No
se puede meter una variable en un .reg directamente."

De todas maneras en mi caso lo que necesitaba era:

[HKEY_LOCAL_MACHINE\SOFTWARE\Nombre de clave]
"\"%windir%\system32\archivo.exe\""=-
Post by M4N010
Se puede hacer por ejemplo un archivo.bat que desinstale completamente el
spyware y ejecute el archivo .reg que hagas, e incluso es fácil programar
una pequeña utilidad que lo haga todo e incluso que se pueda incorporar al
crack que tienes para crackear y eliminar el espía en una sola operación,
pero eso ya sería más adecuado en el grupo de cracks.
Hacer un .bat que ejecute el crack, un archivo .reg y borre directorios
y archivos (que también habría que eliminar) lo tengo más o menos claro.
A lo que me refería era a escribir un .bat que genere el .reg y lo ejecute.
M4N010
2004-04-26 00:16:39 UTC
Permalink
Guillermo Puertas escribió en mensaje ...
Post by Guillermo Puertas
Haré pruebas con %windir% aunque me temo que como dice Yggdrasill: "No
se puede meter una variable en un .reg directamente."
Funciona en los 9X-ME y supongo que en los otros también. Prueba y ya nos
contarás.
Post by Guillermo Puertas
[HKEY_LOCAL_MACHINE\SOFTWARE\Nombre de clave]
"\"%windir%\system32\archivo.exe\""=-
¿Estás seguro de que es eso lo que necesitas?. Es muy raro que haya un valor
cuyo nombre sea la ruta de un programa. Lo más seguro es que esa ruta sea el
contenido de un valor cuyo nombre es otro, por ejemplo "value", (o incluso
del valor predeterminado, que no tiene nombre) de manera que lo que tendrías
que hacer sería eliminar la clave con:

[-HKEY_LOCAL_MACHINE\SOFTWARE\Nombre de clave]

o únicamente ese valor con

[HKEY_LOCAL_MACHINE\SOFTWARE\Nombre de clave]
"value"=-


Y te insisto en que para que el archivo .reg introduzca algunos carácteres
en el registro como las comillas ( " ) o la barra invertida ( \ ), que son
los que se ponen en el .reg para designar claves y valores, tienes que poner
una barra invertida delante del carácter, sino no funcionará (arriba lo
pusiste mal). Para el signo % no es necesario. Mira el ejemplo que te puse
en mi otro mensaje.
Post by Guillermo Puertas
Hacer un .bat que ejecute el crack, un archivo .reg y borre directorios
y archivos (que también habría que eliminar) lo tengo más o menos claro.
A lo que me refería era a escribir un .bat que genere el .reg y lo ejecute.
Pero si te sirve lo que te puse más arriba con %windir% simplemente puedes
poner el .reg junto al .bat para que lo ejecute sin tener que crearlo él
mismo.

Por cierto, para monitorizar los cambios que un programa, por ejemplo una
instalación, hace en un sistema (claves que modifica del registro, archivos
que crea, borra o modifica, etc.) hay programas específicos y muy útiles en
cracking como el FileMonitor y RegistryMonitor, el TechFacts98, etc. También
es muy fácil saber los cambios del registro simplemente exportándolo a un
archivo antes de la instalación, repetirlo después de la instalación, y
comparando ambos archivos exportados.

Saludos.
M4N010.
M4N010
2004-04-26 19:13:03 UTC
Permalink
Guillermo Puertas escribió en mensaje ...
Post by Guillermo Puertas
Haré pruebas con %windir% aunque me temo que como dice Yggdrasill: "No
se puede meter una variable en un .reg directamente."
[HKEY_LOCAL_MACHINE\SOFTWARE\Nombre de clave]
"\"%windir%\system32\archivo.exe\""=-
Repasando ahora los mensajes me parece que no te he interpretado
correctamente: Si lo que buscas es que el archivo .reg haga referencia
genérica al directorio Windows con una variable de entorno pero que luego se
introduzca u opere en el registro el valor de esa variable en lugar de con
ella misma eso efectivamente no se puede hacer de ese modo.

Los archivos .reg introducen en el registro o borran de él las cadenas de
texto que literalmente están escritas en ellos y si utilizas %windir% en el
.reg se introducirá esa cadena literal en el registro y es el programa que
lea la cadena el que interpreta esa variable y la sustituye por la ruta de
windows. Esto es útil al añadir u modificar información del registro, pero
evidentemente a la hora de borrar claves o valores del registro se buscan
los que coinciden con el nombre puesto tal cual en el .reg y al no
interpretar las variables pues lógicamente si lee "%windir%" intentará
borrar "%windir%" y no otra clave cuyo nombre sea el valor de la variable
%windir%.

En cualquier caso, como te he dicho es muy raro que aparezca una ruta como
nombre de una clave o valor sino que será generalmente la cadena contenida
en él, con lo cual borrando desde el .reg el nombre del valor ya está. Y
aunque apareciera como el nombre del valor, si la clave que lo contiene no
sirve para nada más, siempre puedes borrar la clave directamente y ya está.
Post by Guillermo Puertas
Hacer un .bat que ejecute el crack, un archivo .reg y borre directorios
y archivos (que también habría que eliminar) lo tengo más o menos claro.
A lo que me refería era a escribir un .bat que genere el .reg y lo ejecute.
Si efectivamente los valores a borrar tienen como nombre la ruta de windows
y no puedes eliminar completamente las claves que los contienen es cierto
que podrías utilizar un script para borrarlas. Un archivo *.inf tiene una
estructura bastante fácil de entender y en él sí que podrás utilizar la
variable de entorno %windir% para introducir o borrar del registro su ruta;
asimismo puedes introducir en el .inf información sobre los archivos a
copiar o eliminar de modo que puedes hacer un archivo de
instalación/desinstalación completa del spyware con ellos. También hay
pequeños instaladores/desinstaladores a los que les puedes escribir un
script similar en un archivo de texto que luego ellos ejecutan.

Un saludo.
M4N010.
Guillermo Puertas
2004-04-26 23:01:11 UTC
Permalink
Antes que nada: muchísimas gracias, M4N010 y Yggdrasill por vuestro
interés y ayuda.
Post by M4N010
Repasando ahora los mensajes me parece que no te he interpretado
correctamente: Si lo que buscas es que el archivo .reg haga referencia
genérica al directorio Windows con una variable de entorno pero que luego se
introduzca u opere en el registro el valor de esa variable en lugar de con
ella misma eso efectivamente no se puede hacer de ese modo.
Efectivamente, a eso me refería.
Post by M4N010
Los archivos .reg introducen en el registro o borran de él las cadenas de
texto que literalmente están escritas en ellos y si utilizas %windir% en el
..reg se introducirá esa cadena literal en el registro y es el programa que
lea la cadena el que interpreta esa variable y la sustituye por la ruta de
windows. Esto es útil al añadir u modificar información del registro, pero
evidentemente a la hora de borrar claves o valores del registro se buscan
los que coinciden con el nombre puesto tal cual en el .reg y al no
interpretar las variables pues lógicamente si lee "%windir%" intentará
borrar "%windir%" y no otra clave cuyo nombre sea el valor de la variable
%windir%.
Conclusión: no se pueden utilizar variables en .reg
Post by M4N010
En cualquier caso, como te he dicho es muy raro que aparezca una ruta como
nombre de una clave o valor sino que será generalmente la cadena contenida
en él, con lo cual borrando desde el .reg el nombre del valor ya está. Y
aunque apareciera como el nombre del valor, si la clave que lo contiene no
sirve para nada más, siempre puedes borrar la clave directamente y ya está.
Precisamente así es el caso que planteaba. Los valores a eliminar de la
clave:
HKEY_LOCAL_ MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDlls
(que contienen otros valores que supongo necesarios) son:

Nombre: Tipo: Datos:
C:\WINDOWS\system32\adimage.dll REG_DWORD 0x00000001 (1)
C:\WINDOWS\system32\htmdeng.exe REG_DWORD 0x00000001 (1)
C:\WINDOWS\system32\ipcclient.dll REG_DWORD 0x00000001 (1)
C:\WINDOWS\system32\msipcsv.exe REG_DWORD 0x00000001 (1)
C:\WINDOWS\system32\tfde.dll REG_DWORD 0x00000001 (1)
Post by M4N010
Si efectivamente los valores a borrar tienen como nombre la ruta de windows
y no puedes eliminar completamente las claves que los contienen es cierto
que podrías utilizar un script para borrarlas. Un archivo *.inf tiene una
estructura bastante fácil de entender y en él sí que podrás utilizar la
variable de entorno %windir% para introducir o borrar del registro su ruta;
asimismo puedes introducir en el .inf información sobre los archivos a
copiar o eliminar de modo que puedes hacer un archivo de
instalación/desinstalación completa del spyware con ellos. También hay
pequeños instaladores/desinstaladores a los que les puedes escribir un
script similar en un archivo de texto que luego ellos ejecutan.
Como ya he mencionado en otros mensajes no tengo necesidad de saber como
se hace pero me había despertado la curiosidad.
Lo de los archivos .inf o los pequeños instaladores/desinstaladores
parece interesante, sobretodo porque sé muy poquito de los .inf y nada
de los instaladores/desinstaladores. Si me puedes orientar, dando alguna
dirección web (a ser posible en español, que el inglés lo sufro en
silencio) o bosquejando un poco por donde van los tiros te lo
agradecería, siempre que el asunto no sea tan complejo que te lleve
mucho tiempo (reitero que es solo ganas de aprender).

Un saludo.
M4N010
2004-04-27 05:16:28 UTC
Permalink
Guillermo Puertas escribió en mensaje ...
Post by Guillermo Puertas
Precisamente así es el caso que planteaba. Los valores a eliminar de la
HKEY_LOCAL_ MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDlls
C:\WINDOWS\system32\adimage.dll REG_DWORD 0x00000001 (1)
C:\WINDOWS\system32\htmdeng.exe REG_DWORD 0x00000001 (1)
C:\WINDOWS\system32\ipcclient.dll REG_DWORD 0x00000001 (1)
C:\WINDOWS\system32\msipcsv.exe REG_DWORD 0x00000001 (1)
C:\WINDOWS\system32\tfde.dll REG_DWORD 0x00000001 (1)
Ah claro. En efecto esa clave de bibliotecas registradas es uno de los casos
en los que efectivamente las rutas aparecen en los nombres de los valores y
no puedes eliminar la clave entera porque te cargarías también el registro
de las demás librerías.
Post by Guillermo Puertas
Como ya he mencionado en otros mensajes no tengo necesidad de saber como
se hace pero me había despertado la curiosidad.
Lo de los archivos .inf o los pequeños instaladores/desinstaladores
parece interesante, sobretodo porque sé muy poquito de los .inf y nada
de los instaladores/desinstaladores. Si me puedes orientar, dando alguna
dirección web (a ser posible en español, que el inglés lo sufro en
silencio) o bosquejando un poco por donde van los tiros te lo
agradecería, siempre que el asunto no sea tan complejo que te lleve
mucho tiempo (reitero que es solo ganas de aprender).
No hay problema ya que es preferible explicar las cosas a quien tenga ganas
de aprenderlas antes que a quien las estudia por obligación. Hombre,
explicarlo en detalle es algo complejo y no tengo ninguna dirección de
Internet "fichada" sobre estos temas de modo que para decírtelas tendría que
buscarlas y eso lo puedes hacer también tú. En cualquier caso te puedo dar
las indicaciones generales de cómo lo podrías hacer con un archivo .inf y
para ello fíjate en el siguiente ejemplo de un posible contenido que después
te comento brevemente (te pongo únicamente los comandos del archivo
relacionados con el registro de Windows, "AddReg" y "DelReg", los que te
permiten manejar los archivos, como "CopyFiles" o "DelFiles" y hacer más
cosas los podrás mirar después fácilmente por tu cuenta).

------------------------------------------------------------------
; COMENTARIOS
; QUE NO SE EJECUTARÁN

[version]
signature="$CHICAGO$"

[DefaultInstall]
AddReg = Añadir.Registro

[DefaultInstall.ntx86]
AddReg = Añadir.Registro

[Desinstalar]
DelReg = Quitar.Registro

[Añadir.Registro]
HKLM,%VARIABLE%
HKLM,%VARIABLE%,%19%\Nombredelarchivo1.exe,,"Contenido del valor 1"
HKLM,%VARIABLE%,%11%\Nombredelarchivo2.dll,,"Contenido del valor 2"

[Quitar.Registro]
HKLM,%VARIABLE%
HKLM,%VARIABLE%,%19%\Nombredelarchivo1.exe,,"Contenido del valor 1"
HKLM,%VARIABLE%,%11%\Nombredelarchivo2.dll,,"Contenido del valor 2"

[Strings]
VARIABLE="Clavedeprueba\Subclave"

-----------------------------------------------------------------------

Podrás ver que el contenido del archivo está dividido en secciones que van
precedidas por su cabecera. Las líneas precedidas por un punto y coma son
comentarios y no se ejecutarán. A continuación especifica el tipo y versión
del .inf.

Al pinchar en el archivo con el botón derecho aparece una opción en el menú
que es "instalar". Si la escoges ejecutará la sección del archivo llamada
[DefaultInstall] ([DefaultInstall.ntx86] en la familia NT); y en este
ejemplo en esa sección aparece un comando AddReg que indica que se añadirán
al registro las claves o valores que están en la sección Añadir.Registro; en
esa sección una línea indica que en la carpeta HKLM (HKEY_LOCAL_MACHINE) se
creará una clave (en este caso con una subclave) cuyo nombre está
especificado en la variable local %VARIABLE% (Su valor, indicado en la
sección [Strings] es "Clavedeprueba\Subclave"). Las dos líneas siguientes de
la sección indican los valores que se incluirán y como puedes ver se separa
la clave del nombre del valor por una coma y el nombre del valor de su
contenido por dos. En el ejemplo se crean dos valores, uno que tiene como
nombre la ruta de un archivo que está en el directorio de Windows (aquí se
pone la variable de entorno %19% en lugar de %windir%) y otro que tiene como
nombre la ruta de un archivo que está en el directorio de sistema (%11%).
%20% indica la carpeta de fuentes, %1% el escritorio, etc.

Si quieres ejecutar una sección determinada del archivo inf puedes crear un
acceso directo (o escribirlo directamente en linea de comandos) cuyo destino
sea "RunDll32 advpack.dll,LaunchINFSection
Ruta_del_archivo_inf_a_ejecutar,Nombre_de_la_sección_a_ejecutar". Esta orden
indicará a RunDll32.exe que ejecute la función LaunchINFSection contenida en
la librería advpack.dll y esa función ejecutará la sección indicada del
archivo .inf indicado. En el ejemplo anterior, si queremos ejecutar la
sección [Desinstalar] que indica que se borren del registro (DelReg) la
clave y los valores que figuran en la sección Quitar.Registro, y si
suponemos que este archivo se llama Ejemplo .inf y lo tenemos en la carpeta
C:\Mis Documentos, podremos crear un acceso directo cuyo destino sea
"RunDll32 advpack.dll,LaunchINFSection C:\Mis
Documentos\Ejemplo.inf,Desinstalar".

Lo anterior sobre los .inf; sobre los instaladores/instaladores hay variedad
y muchos de ellos te los puedes descargar gratis, cada uno tiene sus
peculiaridades y su propio lenguaje de scripts de modo que deberás buscar el
que más te pueda interesar. Yo uso a veces uno llamado unwise que ocupa 150
KB y cuyos scripts (.log) son al igual que los .inf simples archivos de
texto bastante fáciles de entender y como ejemplo a continuación te pongo un
.log de desinstalación que produce en la instalación del programa BadCopy:

-------------------------------------------------------------------
*** Installation Started 10/10/2003 3:10 ***
Title: BadCopy Pro Installation
Source: C:\WINDOWS\ESCRITORIO\BADCOPY3.EXE
Made Dir: D:\Archivos de programa\Jufsoft\BadCopy
File Copy: D:\Archivos de programa\Jufsoft\BadCopy\UNWISE.EXE
RegDB Key: Software\Microsoft\Windows\CurrentVersion\Uninstall\BadCopy Pro
RegDB Val: BadCopy Pro
RegDB Name: DisplayName
RegDB Root: 2
RegDB Key: Software\Microsoft\Windows\CurrentVersion\Uninstall\BadCopy Pro
RegDB Val: D:\ARCHIV~1\JUFSOFT\BADCOPY\UNWISE.EXE
D:\ARCHIV~1\JUFSOFT\BADCOPY\INSTALL.LOG
RegDB Name: UninstallString
RegDB Root: 2
File Copy: D:\Archivos de programa\Jufsoft\BadCopy\advisor.htm
File Copy: D:\Archivos de programa\Jufsoft\BadCopy\BadCopy.chm
File Copy: D:\Archivos de programa\Jufsoft\BadCopy\BadCopy.exe
File Copy: D:\Archivos de programa\Jufsoft\BadCopy\License.txt
File Copy: D:\Archivos de programa\Jufsoft\BadCopy\Readme.txt
Shell Link: C:\WINDOWS\Menú Inicio\Programas\BadCopy Pro\BadCopy Pro
v3.71.lnk
Shell Link: C:\WINDOWS\Menú Inicio\Programas\BadCopy Pro\BadCopy Pro
Help.lnk
Shell Link: C:\WINDOWS\Menú Inicio\Programas\BadCopy Pro\BadCopy Pro
Readme.lnk
Shell Link: C:\WINDOWS\Menú Inicio\Programas\BadCopy Pro\Free Recovery
Advisor.lnk
Shell Link: C:\WINDOWS\Menú Inicio\Programas\BadCopy Pro\Uninstall
BadCopy.lnk
RegDB Tree: Software\JufSoft\BadCopy
RegDB Root: 1
Delete in-use files: On
------------------------------------------------------------------------

Espero que estos ejemplos que te he puesto te sirvan para algo aunque no
necesites ya realmente la información. Yo no tengo el XP pero supongo que en
esa versión seguirá funcionando como en las anteriores. En cualquier caso
supongo que buscando por ahí podrás encontrar mucha más información si te
interesa.

Saludos.
M4N010.
Guillermo Puertas
2004-05-02 14:46:22 UTC
Permalink
Muchas gracias por tus explicaciones. ¡Te lo has currado!
Post by M4N010
No hay problema ya que es preferible explicar las cosas a quien tenga ganas
de aprenderlas antes que a quien las estudia por obligación.
Sí, pero he estado un poco liado y se me han pasado unos días sin
contestarte
Post by M4N010
no tengo ninguna dirección de
Internet "fichada" sobre estos temas de modo que para decírtelas tendría que
buscarlas y eso lo puedes hacer también tú.
¿Y algún libro? He buscado en Google con AddReg, DelReg, CopyFiles y Del
Files y no he encotrado gran cosa. Haré más combinaciones a ver que pasa.
Post by M4N010
En cualquier caso te puedo dar
las indicaciones generales de cómo lo podrías hacer con un archivo .inf
Muy instructivo. Un poco confuso en la primera lectura pero con una
segunda lectura queda claro.
Post by M4N010
[version]
signature="$CHICAGO$"
¿Qué es $CHICAGOS? Por lo poco que he visto en Google en signature
siempre ponen $CHICAGOS
Post by M4N010
(aquí se
pone la variable de entorno %19% en lugar de %windir%) y otro que tiene como
nombre la ruta de un archivo que está en el directorio de sistema (%11%).
%20% indica la carpeta de fuentes, %1% el escritorio, etc.
¿Por qué les gustará liar la cosa, por qué no se ponen las variables de
entorno %windir%, %homepath%...?

Aunque ya he visto algunos ejemplos de su uso tengo la duda de ¿cuál es
la finalidad de los archivos .inf, para qué fueron creados y para qué
más cosas se pueden aprovechar?
Post by M4N010
Lo anterior sobre los .inf; sobre los instaladores/instaladores hay variedad
y muchos de ellos te los puedes descargar gratis, cada uno tiene sus
peculiaridades y su propio lenguaje de scripts de modo que deberás buscar el
que más te pueda interesar. Yo uso a veces uno llamado unwise que ocupa 150
KB y cuyos scripts (.log) son al igual que los .inf simples archivos de
texto bastante fáciles de entender y como ejemplo a continuación te pongo un
Esto no me ha quedado claro. ¿Cuál es la finalidad de estos
instaladores/desinstaladores de los que hablas? ¿Algo que ver con los
desinstaladoes de Norton, McAfee...? ¿Qué necesidad cubren que no hagan
los instaladores propios de los programas?

Saludos.
M4N010
2004-05-02 20:36:57 UTC
Permalink
Guillermo Puertas escribió en mensaje ...
Post by Guillermo Puertas
¿Y algún libro? He buscado en Google con AddReg, DelReg, CopyFiles y Del
Files y no he encotrado gran cosa. Haré más combinaciones a ver que pasa.
Tampoco sé de ningún libro, lo siento. Puedes buscar por "estructura
archivos inf" (mejor en inglés "inf files structure") o cosas así por el
estilo que supongo que algo habrá.
Post by Guillermo Puertas
Muy instructivo. Un poco confuso en la primera lectura pero con una
segunda lectura queda claro.
Es fácil, pero siempre que se explique un poco más detalladamente. Es
difícil condensar la información en pocas líneas aunque uno se limite a lo
básico.
Post by Guillermo Puertas
¿Qué es $CHICAGOS? Por lo poco que he visto en Google en signature
siempre ponen $CHICAGOS
No sé de dónde proviene el término pero es necesaria la inclusión de esa
línea para que funcione.
Post by Guillermo Puertas
¿Por qué les gustará liar la cosa, por qué no se ponen las variables de
entorno %windir%, %homepath%...?
Por joder un poquito más, por supuesto :-).
Post by Guillermo Puertas
Aunque ya he visto algunos ejemplos de su uso tengo la duda de ¿cuál es
la finalidad de los archivos .inf, para qué fueron creados y para qué
más cosas se pueden aprovechar?
En Windows 9X-ME-NT eran una manera habitual de instalar o desinstalar
controladores de Windows, actualizaciones del sistema operativo (incluso
aunque vinieran en ejecutables, solían copiar archivos .inf en el sistema
para la desinstalación), programas (sobre todo utilidades de Microsoft),
etc. Basta con que hagas una búsqueda por archivos *.inf para ver la
cantidad de ellos que hay en esos sistemas. Posteriormente se popularizaron
los archivos de instalación *.msi de Microsoft Installer, que cumplen una
función similar. Lo que ocurre es que para utilizar los archivos msi tienes
que tener instalada la utilidad Microsoft Installer, e incluso en su versión
correcta ya que sino no funcionan, mientras que los .inf los entiende
directamente el sistema operativo sin necesidad de instalar nada más (en el
sistema se guarda simplemente el archivo .inf por si se necesita reinstalar
o desinstalar). Además los .msi son compilados mientras que los .inf al ser
de texto los puedes editar directamente con el bloc de notas para hacer tus
propios scripts para modificar una instalación/desinstalación o para crear
una propia. Pueden hacer instalaciones completas, o sea copiar archivos de
un origen a un destino especificado, borrarlos, introducir, modificar o
borrar claves o valores en el registro, utilizar variables de entorno en
esas operaciones, pueden contener varias instalaciones o idiomas en el mismo
archivo, etc.; además pueden contener secciones individuales con distintas
finalidades y ejecutar unas u otras según las necesidades (como te indiqué
pueden tener una sección de instalación para los Windows 9X, otra para los
NT, otra para desinstalar, etc.). En definitiva son bastante versátiles. Lo
que no sé es hasta qué punto son útiles en otras versiones de Windows como
el XP ya que no tengo esa versión, pero supongo que funcionarán del mismo
modo.
Post by Guillermo Puertas
Esto no me ha quedado claro. ¿Cuál es la finalidad de estos
instaladores/desinstaladores de los que hablas? ¿Algo que ver con los
desinstaladoes de Norton, McAfee...? ¿Qué necesidad cubren que no hagan
los instaladores propios de los programas?
A ver, es que es un tema un poco largo y complejo y que tiene más cabida en
otros grupos, pero bueno. Básicamente en la instalación de un programa se
copian ciertos archivos en ciertos directorios y cierta información en el
registro de Windows, mientras que en la desinstalación se realizan las
operaciones inversas. Esos archivos e información del registro es necesaria
o útil para el correcto funcionamiento del programa. Un programa puede no
requerir instalación antes de ser ejecutado bien porque no dependa de
archivos externos a él (o bien porque están contenidos por defecto en las
rutas de búsqueda predeterminadas) ni guarde su configuración en el registro
de Windows. También es posible que esas operaciones de instalación las
realice el propio programa la primera vez que se ejecute, de modo que sea él
mismo su propio instalador y desinstalador.

Si un programa X requiere instalación y no es él mismo su propio instalador
entonces es necesario otro programa que realizará esta función
desempaquetando los archivos del programa X; estos archivos pueden estar
empaquetados dentro del mismo ejecutable del instalador (cuando sólo tenemos
un programa de instalación .exe que puede ser por ejemplo un archivo zip o
rar autodescomprimible) o en módulos de datos por separado (cuando tenemos
un ejecutable pequeño y otros mayores con extension como *.dat, *.cab, etc.)
y al descomprimir los archivos podrá hacer lo propio con un desinstalador y
crear un archivo con las operaciones realizadas que normalmente tiene la
extensión .log conteniendo la información de la instalación para poder
desinstalar posteriormente.

Un programador puede construir su propio instalador/desinstalador o utilizar
programas específicos que ya existen para ello como por ejemplo
Installshield. Como te dije, con WinZip o WinRar puedes crear archivos de
instalación sencillos para un programa o incluso puedes crearlos con
archivos .bat, .reg o .inf. No conozco los desinstaladores de Norton o
McAfee pero supongo que estarán destinados a reparar los efectos de
desinstalaciones defectuosas que puedan haber dejado rastros en el sistema,
con lo cual serían algo distinto a lo que estamos hablando.

Sin embargo con la distribución de programas trial o shareware los
instaladores stándar se pueden quedar cortos ya que se puede querer limitar
la duración o el número de instalaciones del programa, de manera que al
instalador ya se le piden más cosas añadidas como que su contenido esté
encriptado para que no se pueda extraer o instalar sin una contraseña
(incluso el propio instalador podrá estar empaquetado para que no se pueda
crackear, con sistemas como Vbox, SafeCast, Armadillo, Aspack, etc.), o que
busque y guarde cierta información oculta en el ordenador de manera que sepa
cuándo caducará el período de prueba o si se ejecutó anteriormente y no
permita reinstalaciones. Se puede querer que el instalador compruebe la
versión de sistema operativo, o la presencia de ciertos programas instalados
para permitir o personalizar la instalación (por ejemplo en las
actualizaciones de un programa se comprueba que efectivamente esté instalada
una versión anterior de éste). En muchas ocasiones el propio instalador es
el que controla la legalidad de la instalación del programa por ejemplo
pidiendo un número de serie para la instalación en lugar de ser el propio
programa el encargado de validarlo de manera que habrá que crackear el
instalador y no el programa. Cuando se requiere este tipo de funciones
avanzadas es fácil que el programador recurra a programas de otros más
específicos en lugar de hacer sus propias rutinas de comprobación. También
puede ser deseable que en un ordenador exista un sólo programa
instalador/desinstalador (al estilo del Microsoft Installer) del que puedan
hacer uso los programas al instalarse de modo que con traer sólo un script
de instalación/desinstalación ya sería suficiente en lugar de guardar en el
ordenador infinidad de otros desinstaladores uno para cada aplicación;
además de que drivers y pequeñas actualizaciones también pueden requerir
instalación y el instalador ocuparía mucho más que ellas mismas (también
para ésto los .inf).

En definitiva, que hay distintas necesidades y maneras de instalar y
desinstalar software y por eso hay tal variedad de programas para esto.
Podría interesarte hacerte tú mismo tus propios desinstaladores para quitar
los programas de tu PC ya que muchas veces los que vienen con ellos dejan
restos sin quitar (voluntaria o involuntariamente) o incluso instalan
utilidades añadidas (por ejemplo spyware) que luego no puede quitar, y en
ese caso tienes todas las posibilidades que habíamos visto de crearte tus
propios programas o mejor aún scripts de desinstalación, mediante .bat,
.reg, .inf que ocuparán muy poco o .log de algún desinstalador concreto como
el que te indiqué que si son de texto serán fáciles de hacer y usar.

Yo por ejemplo tengo muchas utilidades que requieren instalación y que
introducen modificaciones no deseadas o dejan rastros en el sistema al
desinstalarlas pero que como uso sólo esporádicamente no me gusta tener en
mi sistema constantemente, de modo que me hago mis propios instaladores y
desinstaladores de manera que cuando quiero usar una de ellas la instalo en
un pis-pas, la utilizo y la vuelvo a quitar dejando mi sistema completamente
limpio; incluso muchas veces personalizo completamente la
instalación/desinstalación de manera que me instale o desinstale sólamente
los componentes que me interesan y con las configuraciónes que me interesan.

Un saludo.
M4N010.

Loading...