windows registry

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
rheita

hi,

ich möchte etwas in die windows registry schreiben. dafür benutze ich folgendene klasse:

Code: Alles auswählen

import _winreg as wreg
import cPickle as pickle

class WindowsRegistry:

    def __init__(self):
        """
        handle registry access
        """

        try:
            self.key = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Nls")
        except:
            self.key = wreg.CreateKey(wreg.HKEY_LOCALMACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Nls")

    def set(self, name, value):
        " set value in registry "
        wreg.SetValue(self.key, name, wreg.REG_SZ, str(value))

    def pset(self, name, value):
        " set using pickle "
        self.set(name, pickle.dumps(value))

    def get(self, name):
        " get value out of registry "
        return wreg.QueryValue(self.key, name)

    def pget(self, name):
        " get using pickle "
        return pickle.loads(self.get(name))

    def close(self):
        " close the key finally "
        self.key.Close()

    def __del__(self):
        self.close()
(abgeändert von http://aspn.activestate.com/ASPN/Cookbo ... ipe/146305 )

mein code sieht so aus:

Code: Alles auswählen

r = registry.WindowsRegistry()
r.set("snsr", "test")
was ich haben möchte:
einen key in HKEY_LOCALMACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Nls,
mit dem namen "snsr" und der value "test".

was ich bekomme:
diesen ordner: HKEY_LOCALMACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Nls\snsr, in dem sich ein key mit dem namen "standard" und dem value "test" befindet.

wie kann ich dieses problem umgehen?
hab jetzt wirklich schon alles ausprobiert und zähle auf eure hilfe - danke im vorraus!
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

rheita hat geschrieben:irgendjemand? :cry:
Tja, das Schicksal der "Kleinschreiber". Da lass' ich mich gern zweimal bitten (wenn denn überhaupt).

Also, die Begrifflichkeiten in der Registry sind etwas sonderbar. Im ersten Moment meint man zu erkennen, dass es eine Key->Value-Beziehung gibt. Tatsächlich lautet die Abhängigkeit Key->Valuename->Value. Key ist wäre bei Dir also "Nls", Valuename wäre "snsr" und Value wäre "test". Aber mit SetValue() kann man nur Key und Value setzen. Valuename ist immer "(Standard)". Stattdessen musst Du SetValueEx() nehmen: wreg.SetValueEx(self.key,name,0,wreg.REG_SZ, str(value))

hth
Jan
Antworten