2010-03-08 2 views
1

Моя программа пытается создать ключ наКак отключить перенаправление реестра на Python?

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

, но вместо этого ключ создается на

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

и не работают должным образом ... Почему? Как я могу это решить?

+0

Что именно не работает должным образом? Как это происходит? Можете ли вы разместить соответствующую часть своего кода? –

ответ

2

Документы по функциям рефлексивного ключа в winreg скудны (а бит и куски отсутствуют). Вам действительно нужно this patch, но пока оно не будет применено, и с этими исправлениями будет создан новый микровыпуск Python, по крайней мере, вы можете попробовать маршрут DisableReflectionKey и т. Д. В соответствии с документами, которые добавляет патч (вот для них RST):

+.. 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

нет успеха вообще =/... попробовал _winreg.DisableReflectionKey (_winreg.HKEY_LOCAL_MACHINE) или с некоторой константой открытого ключа, но замечает, что происходит – Shady

0

Вы можете использовать:

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

Это работает только в Python 2.6 и выше, однако.

+0

Какой аргумент мне нужен? Он просит одного – Shady

+0

. Отключить требуется либо ключ, либо одна из предопределенных констант. –

Смежные вопросы