Python _winreg leiden
Ich versuche, Zugriff auf die windows registry (in Python) zur Abfrage einer Taste Wert mit _winreg und ich kann nicht ankommen es zu wirken. Die folgende Zeile gibt einen WindowsError sagen, dass das "system nicht finden kann die angegebene Datei":
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r'SOFTWARE\Autodesk\Maya\2012\Setup\InstallPath', 0, _winreg.KEY_ALL_ACCESS)
Nach Stunden versuchen, es sieht aus wie Python nicht sehen, jenseits der "Maya" Teil des Pfades (es sieht aus wie die "2012\...usw..." sub-path ist "unsichtbar" oder nicht-existent). Jetzt habe ich den Registrierungs-Editor zu öffnen und ich Garantie es IST wie ein Pfad im HKLM. Ich bin auf Windows 7 64bit. Keine Ahnung, was ich falsch mache? Dies treibt mich Nüsse. Danke...
- Hast du es geschafft dieses problem zu lösen?
- Ich denke, so. Ehrlich gesagt, ich kann mich nicht erinnern, wie ich am Ende dabei aber. Vielleicht habe ich umgangen, das problem irgendwie. Sorry, ich kann nicht mehr Hilfe...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie zu kombinieren, der Schlüssel für den Zugriff mit der 64-bit-Zugriff-Tasten.
_winreg.KEY_WOW64_64KEY
Zeigt an, dass eine Anwendung auf 64-bit-Windows betreiben sollte auf die 64-bit-registry anzeigen.
_winreg.KEY_WOW64_32KEY
Zeigt an, dass eine Anwendung auf 64-bit-Windows sollte sich auf die 32-bit-registry anzeigen.
Versuchen:
Sind Sie auch mit einem 64-bit-version von Python, oder ist es eine 32-bit-Python? (Letzteres ist häufiger.) Wenn Sie eine 32-bit-version von Python, die
_winreg
- Modul finden Sie in der 32-bit-Registrierung standardmäßig, während Sie regedit ein, zeigen Ihnen die 64-bit-Version. Sie sollten in der Lage sein zu sagen_winreg
zu öffnen eine andere Ansicht, siehe_winreg
Modul docs über den Zugang Rechte, insbesondere die Unterabschnitt auf 64-bit-spezifische flags und in dem MSDN-Artikel verweisen. Leider scheint es nicht so, es gibt einen Weg, für ein 32-bit-Prozess, um Zugriff auf die 64-bit-Registrierung, aber ich kann etwas vermissen.sys.version_info
, aber Sie können sehen, es insys.version
(es wird sagen: '32 bit" oder "64 bit" drin.) Sie können auch einen Blick aufplatform.architecture()
. Wie für die öffnung der registry anders, als ich sagte, ich glaube nicht, dass Sie Zugriff auf die 64-bit-Registrierung von einer 32-bit-Prozess die Weise, die Sie zugreifen können, die entweder von einem 64-bit-Prozess. Ich kann mich irren, aber ich habe noch viel mit 32-bit-Registrierung-Zugang._winreg
auf Windows 7 64-bit & python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v. 1500 64-bit (AMD64)]. Ich bekomme den gleichen Fehler wie @user1219144 system nicht finden kann die angegebene Datei. Um dies zu testen, ich bin mit dieser WindowsRegistry-Klasse mit testcases. Verhalten sehe ich: 1. ausführen-ok; 2. ausführen-ok; Nach dem Neustart Fehler. Zum Debuggen: versuchen Sie es mit IDLE als Admin, indem SieSTART C:\Python27\pythonw.exe C:\Python27\Lib\idlelib\idle.py
in eine .Fledermaus - Datei, rechts klicken und wählen dann als administrator AusführenWindowsRegistry.py
Klasse, und ausführen der Testfälle durch drücken der Taste F5_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, "\SOFTWARE\Microsoft\Microsoft SDKs\Windows")
funktioniert nicht. Ich habe versucht, alle möglichen WOW-flags zu. Versuchte es auf ein Arbeitssystem-und-home-system. Habe es versucht mit Python 3.3. Ich habe keine Ahnung, was falsch läuft. Funktioniert gut, wenn ich versuche, Zugriff auf HKEY_CLASSES_ROOT Zeug.