Page 1 sur 1

Suppression de clé de registre

Publié : 25 oct. 2018 - 19:57
par f4242
Bonjour,

J'essais de supprimer une clé de registre dans mon paquet d'installation de Eraser.

J'ai d'abord essayé avec la méthode native de WAPT:

Code : Tout sélectionner

registry_deletekey(root=HKEY_LOCAL_MACHINE, path=r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers', keyname=r'c:\Program Files\Eraser\Eraser.exe')
L'installation réussie, mais la suppression ne se fait pas.

J'ai ensuite essayé avec

Code : Tout sélectionner

run(r'reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "c:\Program Files\Eraser\Eraser.exe" /f')
Mais ça me retourne:
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"Erreur\xff: Erreur\xff: le syst\u0160me n'a pas trouv\u201a la cl\u201a ou la valeur de Registre sp\u201acifi\u201ae.\r\n"
Pourtant, si je remplace "run" par "print" et que je copie/colle la string dans un command prompt en tant qu'administrateur, la suppression se fait bien.

Quel est mon problème?

Merci!

Re: Suppression de clé de registre

Publié : 25 oct. 2018 - 20:04
par dcardon
Bonjour f4242,
f4242 a écrit : 25 oct. 2018 - 19:57 J'essais de supprimer une clé de registre dans mon paquet d'installation de Eraser.

J'ai d'abord essayé avec la méthode native de WAPT:

Code : Tout sélectionner

registry_deletekey(root=HKEY_LOCAL_MACHINE, path=r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers', keyname=r'c:\Program Files\Eraser\Eraser.exe')
L'installation réussie, mais la suppression ne se fait pas.

J'ai ensuite essayé avec

Code : Tout sélectionner

run(r'reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "c:\Program Files\Eraser\Eraser.exe" /f')
Mais ça me retourne:
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"Erreur\xff: Erreur\xff: le syst\u0160me n'a pas trouv\u201a la cl\u201a ou la valeur de Registre sp\u201acifi\u201ae.\r\n"
Pourtant, si je remplace "run" par "print" et que je copie/colle la string dans un command prompt en tant qu'administrateur, la suppression se fait bien.

Quel est mon problème?
Il y a probablement un soucis de redirection WOW64 (un process 32bit ne voit pas exactement la même base de registre qu'un process 64bit). Vous pouvez essayer avec:

Code : Tout sélectionner

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

Denis

Re: Suppression de clé de registre

Publié : 25 oct. 2018 - 20:29
par f4242
Bonjour,

Ça ne fonctionne pas avec registry_deletekey, mais mon alternative avec run dans un bloque with fonctionne.

Merci!

Re: Suppression de clé de registre

Publié : 25 oct. 2018 - 20:44
par dcardon
Bonsoir f4242,

f4242 a écrit : 25 oct. 2018 - 20:29 Ça ne fonctionne pas avec registry_deletekey, mais mon alternative avec run dans un bloque with fonctionne.
Est ce que vous pourriez essayer en rajoutant WOW6432node?

Code : Tout sélectionner

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

Denis

Re: Suppression de clé de registre

Publié : 26 oct. 2018 - 16:39
par f4242
Bonjour,

Non ça ne marche pas plus.

Je suis encore en 1.3.13, je ne sais pas si ça peut être un bug qui aurait déjà été corrigé en 1.5/1.6.