Salut,
J'ai besoin de manipuler des clés registres sur Windows 7. Pour qu'un logiciel tiers puisse correctement fonctionner avec un module externe Python il faut que certaines clés soient présentes dans la table de registre. Je parviens sans soucis à créer ces clés via le module winreg (voir ci-dessous). Mais je ne parviens pas du tout à les supprimer. Ce qui m'ennuie quelque peu.
Voici un bout de code permettant de créer trois clés (dont deux sous-clés, ce qui me semble être important à signaler):
Quand je liste mes clés, c'est ok. Mais comment les supprimer? L'aide de winreg indique que la méthode DeleteKey() doit être employée sur une clé n'ayant pas d'enfants. Donc j'ai songé à lister récursivement toutes les clés et de les classer afin de les supprimer par "niveau" (un peu galère). Mais je me retrouve systématiquement avec le message d'erreur suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 import sys import winreg VERSION = '3.5' PATTERN_PATH = os.path.join('Software', 'Python', 'PythonCore') PYTHON_PATH = os.path.dirname(sys.executable) # Keys and values to register KEYS = ( (VERSION, None), (VERSION + '\\' + 'InstallPath', PYTHON_PATH), (VERSION + '\\' + 'InstallPath\\InstallGroup', 'Python %s' % VERSION), ) def register_local_python(): root = winreg.HKEY_CURRENT_USER for path, value in KEYS: keypath = os.path.join(PATTERN_PATH, path) # Open or create the registry key try: key = winreg.OpenKey(root, keypath, 0, winreg.KEY_ALL_ACCESS) except: key = winreg.CreateKey(root, keypath) # Set the associated value to the key if value: winreg.SetValueEx(key, '', 0, winreg.REG_SZ, value) # Properly close the key winreg.CloseKey(key)
Je me suis rendu compte que j'avais ce soucis même en essayant d'effacer les clés de KEYS dans l'ordre inverse (vous noterez que ces clés sont rangés dans le bon ordre).[WinError 2] Le fichier spécifié est introuvable
J'ai tenté avec un DeleteValue sans succès non plus. Et mes recherches sur le sujet n'on rien données de probant pour le moment. J'ai vu qu'il existait des wrappers plus ou moins suivis pour winreg, mais aucun ne semble proposer la suppression d'une clé et de toutes ses sous-clés..
Est-ce que vous auriez des conseils à me donner?
J
Partager