Wert aus Registry auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

Hallo zusammen,

ich habe eine Frage zu einem Registry-Schlüssel, den ich auslesen will. Und zwar mit dem folgenden kleinen Code-Schnipsel:

Code: Alles auswählen

import sys

def get_registry_value(key, subkey, value):
    if sys.platform != 'win32':
        raise OSError("get_registry_value is only supported on Windows")
    import _winreg
    key = getattr(_winreg, key)
    handle = _winreg.OpenKey(key, subkey)
    (value, type) = _winreg.QueryValueEx(handle, value)
    return value

def get(key):
    return get_registry_value(
        "HKEY_LOCAL_MACHINE",
        "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",
        key)

get("ProductName")
get("CurrentVersion")
get("CSDVersion")
Das Problem ist, der letzte Aufruf: get("CSDVersion") funktioniert auf WinXP 32bit, auf Windows 2008R2 64bit nicht.
Obwohl auf beiden System der Schlüssel: "CSDVersion" als Typ: "REG_SZ" vorhanden ist.

Kann mir das jemand erklären?

Ich benutze Python 2.6 unter Windows...

CU,
API
Zuletzt geändert von Anonymous am Freitag 24. August 2012, 14:14, insgesamt 1-mal geändert.
Grund: Syntaxhervorherbung aktiviert
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Mittlerweile solltest du doch gelernt haben, dass "funktioniert nicht" keine sinnvolle Fehlerbeschreibung ist. Was funktioniert denn nicht? Gibt es eine Fehlermeldung und, wenn ja, wie lautet diese und deren Traceback? Gibt es keine Fehlermeldung, was erwatest du als Ergebnis und was passiert tatsächlich?
Das Leben ist wie ein Tennisball.
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

EyDu: Sorry, das habe ich wirklich vergessen...

Also hier meine Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "EurexRepoStart.py", line 146, in <module>
    s = SystemInformation()
  File "EurexRepoStart.py", line 68, in __init__
    self.os = self._os_version().strip()
  File "EurexRepoStart.py", line 97, in _os_version
    sp = get("CSDVersion")
  File "EurexRepoStart.py", line 95, in get
    key)
  File "EurexRepoStart.py", line 47, in get_registry_value
    (value, type) = _winreg.QueryValueEx(handle, value)
WindowsError: [Error 2] The system cannot find the file specified
Ich erwarte mit meinem Aufruf eigentlich die Ausgabe von:
ServicePack 3
Antworten