Моя программа пытается создать ключ на
HKLM\Software\Microsoft\Shared Tools\MSCONFIG\startupreg\test\
но вместо этого ключ создается на
HKLM\Wow6432node\Software\Microsoft\Shared Tools\MSCONFIG\startupreg\test\
и не работают должным образом... Почему? Как я могу его решить?
Документы по ключевым словам в winreg не хватает (и бит и куски отсутствуют). Вам действительно нужно этот патч, но пока он не будет применен, и с этими исправлениями будет создан новый микровыпуск 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.
Вы можете использовать:
import _winreg
_winreg.DisableReflectionKey(_winreg.HKEY_LOCAL_MACHINE)
# do stuff here
_winreg.EnableReflectionKey(_winreg.HKEY_LOCAL_MACHINE)
Это работает только в Python 2.6 и выше.