Seite 1 von 2

Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Freitag 20. Juli 2012, 19:03
von Pyanfänger
Hallo, da bin ich wieder :D

Wollte mal Fragen ob es möglich ist dass Python auf regedit zugreift und einen gegebenen Pfad abläuft um dann bei einem bestimmtem Key einen Wert zu verändern...geht das?


MfG

PS: hab schon gegoogelt!

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Freitag 20. Juli 2012, 19:18
von EyDu
Pyanfänger hat geschrieben:PS: hab schon gegoogelt!
Prima! Da der erste Treffer bei der Suche nach "python registry" bereits das richtige Ergebnis liefert, hat sich das Problem ja schon von alleine gelöst.

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Freitag 20. Juli 2012, 19:27
von Pyanfänger
Oh tschuldigung :oops: hatte aber nach was anderem gegoogelt ;D

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Freitag 20. Juli 2012, 19:44
von /me
Pyanfänger hat geschrieben:Oh tschuldigung :oops: hatte aber nach was anderem gegoogelt ;D
Kein Wunder. Du wirfst nämlich Begriffe durcheinander. Zugreifen möchtest du auf die Windows-Registry, aber nicht auf regedit. regedit ist nur eins der Programme mit denen man Einträge in der Registry verändern kann.

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Freitag 20. Juli 2012, 20:02
von EyDu
Zumindest bei mir macht es kaum ein unterschied ob ich, in Kombination mit "python", nach "registry" oder "regedit" suche. Suche ich jedoch noch "funny cats", bekomme ich, zu meiner eigenen Überraschung, keinen einzigen Treffer, welcher bei diesem Problem auch nur ein wenig helfen würde.

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Freitag 20. Juli 2012, 21:31
von BlackJack
@EyDu: Warte ein bisschen und versuch es dann noch einmal — dann findest Du vielleicht dieses Thema hier und damit einen Hinweis auf bessere Suchworte. ;-)

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Freitag 20. Juli 2012, 21:45
von Pyanfänger
ok, ich weiß .. noch eine von meinen dummen fragen :

Code: Alles auswählen

key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\SpecialAccounts\\UserList\\")
setValue(key, REG_DWORD, 1)
CloseKey(hkey)
er findet den pfad ncht da ich ja auch nichts "genaues" angegeben hab, aber nach verschiedenen tutorien ha bich iwie gedacht dass es so geht óO

wenn ich es genauer mache und das dword danach angebe will er es ja auch nicht anehmen :(

Was kann ich tun D: ?

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Samstag 21. Juli 2012, 01:07
von webspider
Wie wäre es wenn du dir die Fehlermeldungen genauer durchliest und in kompletter Form postest anstatt sie als "will nicht annehmen" zu betiteln?

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Samstag 21. Juli 2012, 08:22
von Pyanfänger

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Users\akempf\Desktop\test.py", line 3, in <module>
    key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\SpecialAccounts\\UserList\\")
WindowsError: [Error 2] The system cannot find the file specified

Weil ich ja auch keine datei genau angeben hab aber wenn ich die "datei" also das dword wird ja im code nachher angegeben..

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Samstag 21. Juli 2012, 12:48
von Sr4l
Existiert in deiner regestry den schon "SpecialAccounts", den Standard ist der Eintrag nicht. Du musst ihn erst erstellen.

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Samstag 21. Juli 2012, 13:14
von EyDu
BlackJack hat geschrieben:@EyDu: Warte ein bisschen und versuch es dann noch einmal — dann findest Du vielleicht dieses Thema hier und damit einen Hinweis auf bessere Suchworte. ;-)
Na geht doch. Die Suche bei Google nach "python funny cats" verlinkt schon auf der vierten Seite auf diesen Thread. Wenn das Thema offensichtlich gerade so heiß ist, sollte ich vielleicht eine Umfrage zur Erstellung eines neuen Unterforums für lusitge Katzenbilder initiieren. Quasi als Gegenspieler zu der Rubrik "Äußerst schwierige Fragen".

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Samstag 21. Juli 2012, 13:28
von Pyanfänger
Nope, dieses Verzeichnis existiert bei mir schon. Ich will nicht dass das Programm irgendwelche Dateien ertellt sonder neinfach bei einem bestimmten Key die vlaue von 1 auf 0 setzt und umgkekehrt ;(

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Samstag 21. Juli 2012, 15:22
von Sr4l
Okay dann vermute ich mal das am Ende noch der Username fehlt, den das ist der Eintrag den du ja eigentlich ändern willst.

Code: Alles auswählen

SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\SpecialAccounts\\UserList\\USERNAME
PS: in deinem code machst du einen anderne Key wieder zu (key != hkey)

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Samstag 21. Juli 2012, 20:53
von Pyanfänger
Nope, habs schon mit benutzername da probiert aber es wirft die gleiche meldung aus.

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Samstag 21. Juli 2012, 23:23
von Sr4l
Also eigentlich ist es ganz einfach. Schau dir einfach mal mein Code an und denk darüber nach, die gleichen Keys gibt es auch in deiner registry. Mach parallel die regedit auf und schaus dir an.

Code: Alles auswählen

Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)]

In [1]: import _winreg

In [2]: python = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Python\\PythonCore")

In [3]: _winreg.EnumKey(python, 0)
Out[3]: '2.7'

In [4]: _winreg.EnumKey(python, 1)
Out[4]: '3.2'

In [5]: python_inst_path = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Python\\PythonCore\\2.7\\InstallPath")

In [6]: _winreg.EnumValue(python_inst_path, 0)
Out[6]: ('', u'C:\\Dev\\python27\\', 1)

In [7]: _winreg.EnumKey(python_inst_path, 0)
Out[7]: 'InstallGroup'
Und hier nochmal ein bisschen Code bei dem es knallt:

Code: Alles auswählen

In [5]: python = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\Python\PythonCore\2.7\InstallPath")
---------------------------------------------------------------------------
WindowsError                              Traceback (most recent call last)
<ipython-input-5-ab8f17a1ec18> in <module>()
----> 1 python = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\Python\PythonCore\2.7\InstallPath")

WindowsError: [Error 2] Das System kann die angegebene Datei nicht finden

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Sonntag 22. Juli 2012, 11:00
von Pyanfänger
Naja

1. er findet den key nich, das is ja das problem =S

2. ich hab in meiner registry nix mt python :o

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Sonntag 22. Juli 2012, 11:17
von EyDu
Pyanfänger hat geschrieben:1. er findet den key nich, das is ja das problem =S
Deshalb sollst du es ja auch schrittweise mit Regedit kontrollieren.
Pyanfänger hat geschrieben:2. ich hab in meiner registry nix mt python :o
Das ist ein Beispiel. Du sollst das natürlich auf deinen Code adaptieren.

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Sonntag 22. Juli 2012, 11:50
von Hyperion
Der OP könnte ja auch mal einen Export aus RegEdit hier reinstellen - also nur von der besagten Stelle. Alleine daran ließen sich ja eventuelle Typos ablesen ;-)

Ich würde bei Pfadangaben auch auf RawStrings zurückgreifen:

Code: Alles auswählen

python = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Python\PythonCore")
Damit spart man sich das Escapen von Pfadangaben.

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Sonntag 22. Juli 2012, 14:11
von Pyanfänger

Re: Python - Auf regedit zugreifen und etwas verändern?

Verfasst: Sonntag 22. Juli 2012, 14:14
von Hyperion
Bitte poste das doch in einem Pastebin, wie etwa gist.github.com oder dem in diesem Forum verlinkten. Rapidshare mag hier kaum jemand ;-)

Und exportiere bitte nicht Deine *gesamte* Registry, sondern nur den Zweig, der hier interessant ist. (Evtl. hast Du das schon richtig gemacht - ich habe mir die Datei nicht herunter geladen)