Page 1 of 1

Registry key deletion

Published: October 25, 2018 - 7:57 PM
by f4242
Good morning,

I am trying to delete a registry key in my Eraser installation package.

I first tried using WAPT's native method:

Code: Select all

registry_deletekey(root=HKEY_LOCAL_MACHINE, path=r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers', keyname=r'c:\Program Files\Eraser\Eraser.exe')
The installation was successful, but the removal failed.

I then tried with

Code: Select all

run(r'reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "c:\Program Files\Eraser\Eraser.exe" /f')
But it makes me angry:
CalledProcessErrorOutput: Command 'reg delete "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers" /v "c:\\Program Files\\Eraser\\Eraser.exe" /f' returned non-zero exit status 1.
Output:u"Error: The system could not find the specified registry key or value.\r\n"
However, if I replace "run" with "print" and copy/paste the string into a command prompt as administrator, the deletion works correctly.

What is my problem?

THANKS!

Re: Registry key deletion

Published: October 25, 2018 - 8:04 PM
by dcardon
Hello f4242,
f4242 wrote: Oct 25, 2018 - 7:57 PM I am trying to delete a registry key in my Eraser installation package.

I first tried using WAPT's native method:

Code: Select all

registry_deletekey(root=HKEY_LOCAL_MACHINE, path=r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers', keyname=r'c:\Program Files\Eraser\Eraser.exe')
The installation was successful, but the removal failed.

I then tried with

Code: Select all

run(r'reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "c:\Program Files\Eraser\Eraser.exe" /f')
But it makes me angry:
CalledProcessErrorOutput: Command 'reg delete "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers" /v "c:\\Program Files\\Eraser\\Eraser.exe" /f' returned non-zero exit status 1.
Output:u"Error: The system could not find the specified registry key or value.\r\n"
However, if I replace "run" with "print" and copy/paste the string into a command prompt as administrator, the deletion works correctly.

What is my problem?
There's probably a WOW64 redirection issue (a 32-bit process doesn't see the exact same registry as a 64-bit process). You can try with:

Code: Select all

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')
Sincerely,

Denis

Re: Registry key deletion

Published: October 25, 2018 - 8:29 PM
by f4242
Hello,

it doesn't work with registry_deletekey, but my alternative using run in a with works.

Thank you!

Re: Registry key deletion

Published: October 25, 2018 - 8:44 PM
by dcardon
Good evening f4242,

f4242 wrote: Oct 25, 2018 - 8:29 PM It doesn't work with registry_deletekey, but my alternative with run in a with works.
Could you try adding WOW6432node?

Code: Select all

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

Denis

Re: Registry key deletion

Published: October 26, 2018 - 4:39 PM
by f4242
Hello,

No, it's still not working.

I'm still on version 1.3.13; I don't know if it could be a bug that was already fixed in 1.5/1.6.