2014-12-11 5 views
0

Я пытался получить доступ к пользовательскому реестру на Win 7 64 битой машины, но каждый раз, когда я пытаюсь сделать что выдает ошибку о том, чтоНевозможно получить доступ к реестру под HKLM/SOFTWARE на 64 битную платформе

WindowsError: [Error2] The system cannot find the file specified

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

HKEY_LOCAL_MACHINE\SOFTWARE\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\SOFTWARE\Wow6432Node\test11

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

HKEY_LOCAL_MACHINE\SOFTWARE\test11

ответ

2

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

import _winreg 

     a = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r'SOFTWARE\test', 0, (_winreg.KEY_WOW64_64KEY + _winreg.KEY_ALL_ACCESS)) 
+0

дать разрешение администратора –

+0

Спасибо, что это сработало. –

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

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

handle_1 = registry.CreateKeyEx(_winreg.HKEY_LOCAL_MACHINE,r"SOFTWARE\test11") 
+0

Ваше решение будет работать нормально, если ключ реестра в разделе HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \, но вы хотите получить доступ к разделу реестра в разделе HKEY_LOCAL_MACHINE \ SOFTWARE \ xyz это не сработает. –

0

Чтобы создать ключ реестра, как:

HKEY_LOCAL_MACHINE\SOFTWARE\test11

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

import _winreg 

    a = _winreg.CreateKeyEx(_winreg.HKEY_LOCAL_MACHINE, r'SOFTWARE\test', 0, (_winreg.KEY_WOW64_64KEY + _winreg.KEY_ALL_ACCESS))