Изменить 64-битный реестр с 32-битного Python - PullRequest
4 голосов
/ 14 декабря 2011

Мне трудно понять это. Если я прав, 32-битный Python не может запустить код и изменить значения реестра в 64-битной. Я правильно понял? Или есть переключатель для включения этой функции?

Есть это: http://msdn.microsoft.com/en-us/library/aa384129%28v=VS.85%29.aspx

Но как мне использовать его со следующим кодом? http://www.blog.pythonlibrary.org/2010/03/20/pythons-_winreg-editing-the-windows-registry/

Спасибо, Oz

1 Ответ

6 голосов
/ 19 декабря 2011

Как объясняется в статье MSDN, на которую вы ссылались, 64-битная Windows имеет два реестра просмотров , один для 32-битных и один для 64-битных. По умолчанию 32-битное приложение (например, ваш скрипт Python выполняется 32-битным интерпретатором Python) получит доступ к 32-битному представлению. Вы можете заставить его получить доступ к 64-битному представлению, используя флаги, упомянутые в статье MSDN. Чтобы использовать эти флаги, вам нужно вызвать _winreg.OpenKey, _winreg.CreateKeyEx или _winreg.DeleteKeyEx с правильными параметрами, например,

handle = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, "your_sub_key", 0, _winreg.KEY_READ | _winreg.KEY_WOW64_64KEY)

См. _winreg документацию для получения дополнительной информации.

...