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

1

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

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

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

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

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

  • 0
    Что именно не работает должным образом? Как это терпит неудачу? Можете ли вы опубликовать соответствующую часть вашего кода?
Теги:
64bit
registry

2 ответа

2
Лучший ответ

Документы по ключевым словам в 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.
  • 1
    безуспешно = / ... пробовал _winreg.DisableReflectionKey (_winreg.HKEY_LOCAL_MACHINE), или с некоторой константой открытого ключа, но замечание происходит
0

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

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

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

  • 0
    какой аргумент мне нужен здесь? Это просит одного
  • 0
    Для отключения требуется либо ключ, либо одна из предопределенных констант.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню