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