Página 1 de 1

Eliminación de clave de registro

Publicado: 25 de octubre de 2018 - 19:57
por f4242
Buen día,

Estoy intentando eliminar una clave de registro en mi paquete de instalación de Eraser.

Primero intenté utilizar el método nativo de WAPT:

Código: Seleccionar todo

registry_deletekey(root=HKEY_LOCAL_MACHINE, path=r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers', keyname=r'c:\Program Files\Eraser\Eraser.exe')
La instalación fue exitosa, pero la eliminación falló.

Luego lo intenté con

Código: Seleccionar todo

run(r'reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "c:\Program Files\Eraser\Eraser.exe" /f')
Pero me enoja:
CalledProcessErrorOutput: El comando 'reg delete "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers" /v "c:\\Program Files\\Eraser\\Eraser.exe" /f' devolvió un estado de salida distinto de cero (1).
Salida: u"Error: El sistema no pudo encontrar la clave o el valor del registro especificado.\r\n"
Sin embargo, si reemplazo "ejecutar" por "imprimir" y copio/pego la cadena en un símbolo del sistema como administrador, la eliminación funciona correctamente.

¿Cual es mi problema?

¡GRACIAS!

Re: Eliminación de clave de registro

Publicado: 25 de octubre de 2018 - 20:04
por dcardon
Hola f4242,
f4242 escribió: 25 de octubre de 2018 - 19:57 Estoy intentando eliminar una clave de registro en mi paquete de instalación de Eraser.

Primero intenté utilizar el método nativo de WAPT:

Código: Seleccionar todo

registry_deletekey(root=HKEY_LOCAL_MACHINE, path=r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers', keyname=r'c:\Program Files\Eraser\Eraser.exe')
La instalación fue exitosa, pero la eliminación falló.

Luego lo intenté con

Código: Seleccionar todo

run(r'reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "c:\Program Files\Eraser\Eraser.exe" /f')
Pero me enoja:
CalledProcessErrorOutput: El comando 'reg delete "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers" /v "c:\\Program Files\\Eraser\\Eraser.exe" /f' devolvió un estado de salida distinto de cero (1).
Salida: u"Error: El sistema no pudo encontrar la clave o el valor del registro especificado.\r\n"
Sin embargo, si reemplazo "ejecutar" por "imprimir" y copio/pego la cadena en un símbolo del sistema como administrador, la eliminación funciona correctamente.

¿Cual es mi problema?
Probablemente haya un problema de redirección de WOW64 (un proceso de 32 bits no ve exactamente el mismo registro que uno de 64 bits). Puedes probar con:

Código: Seleccionar todo

with disable_file_system_redirection():
    registry_deletekey(root=HKEY_LOCAL_MACHINE, path=r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers', keyname=r'c:\Program Files\Eraser\Eraser.exe')
Atentamente,

Denis

Re: Eliminación de clave de registro

Publicado: 25 de octubre de 2018 - 20:29
por f4242
Hola,

no funciona con registry_deletekey, pero mi alternativa usando run en un with funciona.

¡Gracias!

Re: Eliminación de clave de registro

Publicado: 25 de octubre de 2018 - 20:44
por dcardon
Buenas noches f4242,

f4242 escribió: 25 de octubre de 2018 - 8:29 PM No funciona con registry_deletekey, pero mi alternativa con run en un with funciona.
¿Podrías intentar agregar WOW6432node?

Código: Seleccionar todo

registry_deletekey(HKEY_LOCAL_MACHINE, r'SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers', r'c:\Program Files\Eraser\Eraser.exe')
Atentamente,

Denis

Re: Eliminación de clave de registro

Publicado: 26 de octubre de 2018 - 16:39
por f4242
Hola,

no, sigue sin funcionar.

Sigo en la versión 1.3.13; no sé si podría ser un error que ya se haya corregido en la versión 1.5/1.6.