Не удается получить доступ к реестру в разделе HKLM/SOFTWARE на 64-разрядной платформе.

Я пытался получить доступ к пользовательскому реестру на 64-разрядной машине Win 7, но каждый раз, когда я пытаюсь это сделать, выдается ошибка, говорящая, что

WindowsError: [Error2] Система не может найти указанный файл

Реестр, к которому я пытался получить доступ:

HKEY_LOCAL_MACHINE\ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ\test11

Я использовал следующий код для доступа к нему:

import _winreg
handle_1 = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,r"SOFTWARE\test11")

Также, когда я пытаюсь создать реестр, например:

handle_1 = _winreg.CreateKey(_winreg.HKEY_LOCAL_MACHINE,r"SOFTWARE\test11")

Он создает ключ в следующем месте:

HKEY_LOCAL_MACHINE\ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ\Wow6432Node\test11

Я не понимаю, почему он не создает это так

HKEY_LOCAL_MACHINE\ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ\test11


person Umang Agrawal    schedule 11.12.2014    source источник


Ответы (3)


Это должно работать:

import _winreg

        a = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r'SOFTWARE\test', 0, (_winreg.KEY_WOW64_64KEY + _winreg.KEY_ALL_ACCESS))
person Abhinav Bhardwaj    schedule 11.12.2014
comment
дать разрешение администратора - person Abhinav Bhardwaj; 11.12.2014
comment
Этот ответ должен получить больше голосов. Я часами пытался получить версию Firefox из реестра. - person Trapli; 05.09.2019

import _winreg as registry
key = registry.OpenKey(registry.HKEY_LOCAL_MACHINE,r"SOFTWARE\test11",0, registry.KEY_ALL_ACCESS)

для открытия вы можете попробовать это. Для создания используйте

handle_1 = registry.CreateKeyEx(_winreg.HKEY_LOCAL_MACHINE,r"SOFTWARE\test11")
person vks    schedule 11.12.2014
comment
Ваше решение будет работать нормально, если раздел реестра находится в HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\, но если вы хотите получить доступ к разделу реестра в HKEY_LOCAL_MACHINE\SOFTWARE\xyz, это не сработает. - person Umang Agrawal; 11.12.2014

Чтобы создать раздел реестра, например:

HKEY_LOCAL_MACHINE\ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ\test11

Используйте следующий код:

import _winreg

    a = _winreg.CreateKeyEx(_winreg.HKEY_LOCAL_MACHINE, r'SOFTWARE\test', 0, (_winreg.KEY_WOW64_64KEY + _winreg.KEY_ALL_ACCESS))
person Umang Agrawal    schedule 11.12.2014