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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Archivo bat para borrar una entrada de registro con comodines
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Archivo bat para borrar una entrada de registro con comodines  (Leído 4,758 veces)
zelarra

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Archivo bat para borrar una entrada de registro con comodines
« en: 9 Octubre 2023, 18:22 pm »

Hola. En primer lugar, gracias por aceptarme.

En segundo lugar, quería pedir ayuda, pues estoy intentando crear un archivo bat para borrar una entrada del registro utilizando comodines.

El problema que tengo es que una de las carpetas de la ruta suele cambiar con cada actualización del programa (en este caso, Skype), lo que me obliga o bien a modificar el reg cada vez que se actualice, o bien crear un bat con comodines que me permita saltar ese inconveniente.

He encontrado un código en Internet, que he adaptado para mi caso, pero no consigo que me funcione. No sé qué puedo estar haciendo mal, pues también he probado a ejecutarlo como administrador.

Código:
@echo off

set "clave=HKLM\SOFTWARE\Classes\PackagedCom\Package\Microsoft.SkypeApp*\Class\{776DBC8D-7347-478C-8D71-791E12EF49D8}"

for /f "tokens=*" %%a in ('reg query "%clave%"') do (
reg delete "%%a" /f
)

echo La eliminación de claves ha terminado.

¿Alguien me puede ayudar?

Muchas gracias.


En línea

EdePC
Moderador Global
***
Conectado Conectado

Mensajes: 2.069



Ver Perfil
Re: Archivo bat para borrar una entrada de registro con comodines
« Respuesta #1 en: 10 Octubre 2023, 15:20 pm »

Tengo entendido que no se pueden usar comodines para Reg Query de esa manera, tendrías que hacerlo en dos pasos:

1. Busca en la Clave superior la SubClave que tiene el comodín, con /F se especifica esa SubClave

Código
  1. Reg Query HKLM\SOFTWARE\Classes\PackagedCom\Package /F Microsoft.SkypeApp

2. Puedes usar Find o FindStr para limpiar la salida del comando anterior y quedarte solo con la línea respuesta que te interesa

Código
  1. Reg Query HKLM\SOFTWARE\Classes\PackagedCom\Package /F Microsoft.SkypeApp | FindStr Microsoft.SkypeApp

Con eso ya tendrías la parte de la Clave con comodín resuelta y solo te quedaría utilizarla para encadenarla con la otra parte y quede completa, por ejemplo puedes crear un Batch para hacer la prueba primero siempre con un simple Reg Query para ver si va a trabajar bien y no malograr el registro:

Código
  1. For /F %%G In ('HKLM\SOFTWARE\Classes\PackagedCom\Package /F Microsoft.SkypeApp ^| FindStr Microsoft.SkypeApp') Do Reg Query %%G\Class\{776DBC8D-7347-478C-8D71-791E12EF49D8}

Si el resultado es satisfactorio ya puedes reemplazar el último Reg Query por Reg Delete:

Código
  1. For /F %%G In ('HKLM\SOFTWARE\Classes\PackagedCom\Package /F Microsoft.SkypeApp ^| FindStr Microsoft.SkypeApp') Do Reg Delete %%G\Class\{776DBC8D-7347-478C-8D71-791E12EF49D8} /F

Otra opción es llamar a PowerShell que es más robusto y sencillo para tu caso porque soporta comodines directamente:

Código
  1. @Echo Off
  2. Set "clave=HKLM:\SOFTWARE\Classes\PackagedCom\Package\Microsoft.SkypeApp*\Class\{776DBC8D-7347-478C-8D71-791E12EF49D8}"
  3. PowerShell Remove-Item %clave% -Recurse
  4. Echo La eliminacion de claves ha terminado.


« Última modificación: 10 Octubre 2023, 15:22 pm por EdePC » En línea

zelarra

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: Archivo bat para borrar una entrada de registro con comodines
« Respuesta #2 en: 10 Octubre 2023, 20:22 pm »

Hola, acabo de encontrar la solución.

He creado un archivo bat, con este código:

Código:
$partialKeyName = "Microsoft.SkypeApp"
$fullKeyPath = "HKLM:\SOFTWARE\Classes\PackagedCom\Package"

# Getting all subkeys
try {
$subkeys = Get-ChildItem -Path $fullKeyPath -Recurse | Where-Object { $_.PSChildName -like "$partialKeyName*" }
} catch {

exit
}

# Looping through the subkeys and delete the specific subkey
foreach ($key in $subkeys) {
$classSubKey = $key.PSParentPath + "\" + $key.PSChildName + "\Class\{776DBC8D-7347-478C-8D71-791E12EF49D8}"
try {
Remove-Item -Path $classSubKey -ErrorAction Stop

} catch {


}
}

Y luego un archivo vbs para ejecutarlo:

set cmd = createobject("wscript.shell")
cmd.run "powershell.exe -ExecutionPolicy Bypass -File D:\Tecnologia\Skype.ps1", vbHide
Set cmd = nothing

Por último, he creado una tarea programada para ejecutar el vbs al iniciar el sistema, y arreglado.

Muchas gracias por las sugerencias.

Un saludo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
CREAR UNA ENTRADA EN EL REGISTRO
Programación Visual Basic
hierosgammos 4 2,246 Último mensaje 19 Julio 2005, 01:01 am
por Slasher-K
Comprobar una entrada del registro
Programación Visual Basic
Snort 5 1,941 Último mensaje 12 Septiembre 2006, 10:36 am
por Snort
[SQL en PHP] Borrar entrada a las 24 horas
PHP
dimitrix 8 6,157 Último mensaje 17 Mayo 2009, 20:58 pm
por twoz
borrar entrada de registro win 8.1
Windows
DaVinci4 4 4,322 Último mensaje 28 Marzo 2017, 18:50 pm
por Randomize
Archivo bat para borrar una entrada de registro « 1 2 »
Scripting
zelarra 12 2,248 Último mensaje 19 Marzo 2024, 20:11 pm
por zelarra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines