2010-03-08 3 views
1

Mon programme tente de créer une clé sur leComment puis-je désactiver la redirection de registre sur Python?

HKLM\Software\Microsoft\Shared Tools\MSCONFIG\startupreg\test\ 

mais la clé est créée sur le

HKLM\Wow6432node\Software\Microsoft\Shared Tools\MSCONFIG\startupreg\test\ 

et ne fonctionnent pas correctement ... Pourquoi? Comment puis-je le résoudre?

+0

Qu'est-ce qui ne fonctionne pas correctement? Comment ça échoue? Pouvez-vous poster la partie pertinente de votre code? –

Répondre

2

Les documents sur les fonctionnalités de réflexion-clé dans winreg sont rares (et les pièces manquantes). Vous avez vraiment besoin de this patch, mais jusqu'à ce qu'il soit appliqué et qu'une nouvelle version de Python soit faite avec ces correctifs, vous pouvez au moins essayer la route DisableReflectionKey etc selon les docs que le patch ajoute (voici la RST pour eux):

+.. function:: DisableReflectionKey(key) 
+ 
+ Disables registry reflection for 32-bit processes running on a 64-bit 
+ Operating System. 
+ 
+ *key* is an already open key, or one of the predefined :const:`HKEY_\*` 
+ constants. 
+ 
+ Will generally raise :exc:`NotImplemented` if executed on a 32-bit 
+ Operating System. 

+ If the key is not on the reflection list, the function succeeds but has no 
+ effect. Disabling reflection for a key does not affect reflection of any 
+ subkeys. 

+ 
+.. function:: EnableReflectionKey(key) 
+ 
+ Restores registry reflection for the specified disabled key. 
+ 
+ *key* is an already open key, or one of the predefined :const:`HKEY_\*` 
+ constants. 
+ 
+ Will generally raise :exc:`NotImplemented` if executed on a 32-bit 
+ Operating System. 
+ 
+ Restoring reflection for a key does not affect reflection of any subkeys. 
+ 
+ 
+.. function:: QueryReflectionKey(key) 
+ 
+ Determines the reflection state for the specified key. 
+ 
+ *key* is an already open key, or one of the predefined :const:`HKEY_\*` 
+ constants. 
+ 
+ Returns ``True`` if reflection is disabled. 
+ 
+ Will generally raise :exc:`NotImplemented` if executed on a 32-bit 
+ Operating System. 
+1

pas de succès du tout =/... essayé _winreg.DisableReflectionKey (_winreg.HKEY_LOCAL_MACHINE), ou avec un certain const d'une clé ouverte mais notant arrive – Shady

0

Vous pouvez utiliser:

import _winreg 
_winreg.DisableReflectionKey(_winreg.HKEY_LOCAL_MACHINE) 
# do stuff here 
_winreg.EnableReflectionKey(_winreg.HKEY_LOCAL_MACHINE) 

Cela ne fonctionne que dans Python 2.6 et au-dessus cependant.

+0

quel genre d'argument j'ai besoin ici? Il demande un – Shady

+0

Désactiver nécessite une clé ou l'une des constantes prédéfinies. –