[Python-de] Eine Frage zur Bibliothek für Python 2.6: _winreg()

Tuzhog tuzhog at lavabit.com
So Mär 21 11:44:02 UTC 2010


> Hallo zusammen,
> 
> ich bin neu hier und auch in der Materie Python noch nicht lange dabei.
> Erst seit Anfang März. Ich habe mir schon am Tutorial "A byte of Python"
> (deutsche Übersetzung herangewagt. Und es hat mich noch hungriger auf
> Python gemacht ;-) Auch habe ich schon einen Blick in docs.python.org
> geworfen.
> 
> Folgende Situation:
> Ich möchte mir gerne mit dieser Funktion zwei Dinge aus der Registry
> auslesen lassen:
> 
> 1. In welchem Verzeichnis wurde Python installiert und
> 2. Welche Version von Python wurde installiert.

> #ReadingRegistry.py
> 
> import _winreg
> 
> InstallPath =
> _winreg.EnumKey(HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath,
> 0)
> Version =
> _winreg.EnumValue(HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath\InstallGroup,
> 0)
> 
> print "Installationspfad: "+InstallPath+"\nVersion: "+Version
> 
> 
> Kann mir bitte jemand die Funktionen zum besseren Verständnis näher
> Erklären?
> 
> Danke euch im Voraus für die Hilfe!
> 

Hi,


Ich habe mich einmal mit der _winreg Bibliothek beschäftigen "dürfen" um
den VLC Installationspfad herauszufinden und soweit ich weiß muss man
den zu benutzenden Schlüssel immer vorher öffnen (winreg.OpenKey) bevor
man ihn auszulesen kann (winreg.QueryValueEx).

Dein Beispiel würde ich daher folgendermaßen lösen:

import _winreg as winreg
try:
	# Den Schlüssel öffnen (single-user installationen)
	key = winreg.OpenKey(winreg.HKEY_USERS, "S-1-5-4\\Software\\Python\
\PythonCore\\2.6\\InstallPath")
except WindowsError:
	# Den Schlüssel öffnen (Mehrbenutzerinstallation)
	key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, "Software\\Python\
\PythonCore\\2.6\\InstallPath")

# Wert auslesen ('' bedeutet "(Standard)")
path    = winreg.QueryValueEx(key, '')[0]
# Unterschlüssel öffnen und ebenfalls auslesen
version = winreg.QueryValueEx(winreg.OpenKey(key, "InstallGroup"),
'')[0]

# Schlüssel schließen (nicht unbedingt notwendig)
key.Close()

# Ausgeben
print "Installationspfad:", path
print "Version:          ", version
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 198 bytes
Beschreibung: Dies ist ein digital signierter Nachrichtenteil
URL         : <http://python.net/pipermail/python-de/attachments/20100321/bb0ad6e7/attachment.pgp>


Mehr Informationen über die Mailingliste python-de