Seite 1 von 1

Updatechecker

Verfasst: Samstag 11. Mai 2013, 10:33
von Gary123456
Kleine Frage:

Code: Alles auswählen

import _winreg as wr
print wr.QueryValueEx(wr.HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\NVIDIA Drivers\DisplayVersion")
Warum kann es bei mir den Pfad nicht finden. (Er existiert zu 100%)? Wo liegt mein dämlicher Fehler?

Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:/Users/Gary/Desktop/Programmierung/Python/Projekte/Updatechecker/phase1.py", line 2, in <module>
    print wr.QueryValueEx(wr.HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\NVIDIA Drivers\DisplayVersion")
WindowsError: [Error 2] Das System kann die angegebene Datei nicht finden

Re: Updatechecker

Verfasst: Samstag 11. Mai 2013, 11:02
von koenigssphinx
Im Pfad werden(wie beim String) '\' Zeichen als besondere Werte angesehen!
z.B. \t als Tabulator
Das kann man umgehen mit '\\'
import _winreg as wr
print wr.QueryValueEx(wr.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\NVIDIA Drivers\\DisplayVersion")
Info \n = NewLine! folglich Pfad:
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
VIDIA Drivers\DisplayVersion

Re: Updatechecker

Verfasst: Samstag 11. Mai 2013, 11:20
von Gary123456
Dein Versuch klappte auch nicht - derselber Fehler. Danach habe ich versucht mit Hilfe von r den String in einen Raw String umzuwandeln. Funktionierte auch nicht.

Re: Updatechecker

Verfasst: Samstag 11. Mai 2013, 14:35
von Dami123
Versuchs mal mit "/" statt "\".

Re: Updatechecker

Verfasst: Samstag 11. Mai 2013, 14:38
von Gary123456
Gleicher Fehler. Ich check das mal an andere Pfäde.

Re: Updatechecker

Verfasst: Samstag 11. Mai 2013, 14:41
von Gary123456
Bei anderen Pfaden gleiches Problem

Code: Alles auswählen

import _winreg as wr
print wr.QueryValueEx(wr.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Microsoft Visual Studio 2010 Tools for Office Runtime (x64) Language Pack - DEU\\DisplayVersion")

Re: Updatechecker

Verfasst: Samstag 11. Mai 2013, 15:56
von xeike
Gary123456 hat geschrieben:Bei anderen Pfaden gleiches Problem
Gibt es in dieser Datei vielleicht etwas "einfachere" Pfade wie

"Software" oder "Test\irgendwas". So dass du vielleicht mal den grundsätzlichen Zugriff auf diese Datei testen kannst?

Xe

Re: Updatechecker

Verfasst: Samstag 11. Mai 2013, 16:16
von Gary123456

Code: Alles auswählen

Gibt es in dieser Datei vielleicht etwas "einfachere" Pfade wie
Keine Datei. Ein Registrypfad.
"Software" oder "Test\irgendwas". So dass du vielleicht mal den grundsätzlichen Zugriff auf diese Datei testen kannst?
Warum? Beide Registrypfäde existieren zu 100% - da macht die Länge des Pfades nichts aus.

Aber für Dich ein kürzerer Pfad:

Code: Alles auswählen

import _winreg as wr
print wr.QueryValueEx(wr.HKEY_LOCAL_MACHINE, "SOFTWARE\\Macromedia\\FlashPlayerPlugin\\Version")
Gleicher Fehler erscheint.

EDIT: Vermutung: Registryumleitung wegen 64bit System.
~Gary

Re: Updatechecker

Verfasst: Samstag 11. Mai 2013, 17:58
von Gary123456
Bei dem herrscht keine Registry Umleitung:

Code: Alles auswählen

import _winreg as wr
print wr.QueryValueEx(wr.HKEY_LOCAL_MACHINE, "SOFTWARE\\Macromedia\\FlashPlayerPlugin\\Version")
Schaut man unter HKLM\\Software\\Wow6432Node tritt der Schlüssel Macromedia\\FlashplayerPlugin\\Version wieder auf.
Bei allen anderen herrscht eine Registryumleitung und kann daher nicht funktionieren.

Ist der Python Interpreter 32bit oder 64bit? Finde nichts in Google.

Re: Updatechecker

Verfasst: Samstag 11. Mai 2013, 18:02
von cofi
Das solltest du wissen, schliesslich hast du ja Python installiert.

Statt Google solltest du lieber deine Python Installation fragen:

Code: Alles auswählen

In [7]: import platform

In [8]: platform.architecture()
Out[8]: ('64bit', 'ELF')

Re: Updatechecker

Verfasst: Samstag 11. Mai 2013, 18:04
von Gary123456

Code: Alles auswählen

>>> import platform
>>> platform.architecture()
('32bit', 'WindowsPE')
Vorher habe ich das schon probiert. Aber es kommt recht oft vor, dass unter Shell keine Ausgabe erzeugt wird. Wenn ich beispielsweise 2+2 eingebe kommt nix aus, wenn ich ein print davor setze, kommt auch nix raus.

Du hast 64bit , ich 32bit? Warum? Ist mein Interpreter also 32bit?

Re: Updatechecker

Verfasst: Samstag 11. Mai 2013, 18:29
von Flano

Code: Alles auswählen

import winreg as wr
key = wr.OpenKey(wr.HKEY_LOCAL_MACHINE, r'Software\Macromedia\FlashPlayer', 0, wr.REG_SZ)
print(wr.QueryValueEx(key, "CurrentVersion"))
Das funktioniert bei mir! Benutze allerdings Python 3.

Gruß Flano

Re: Updatechecker

Verfasst: Samstag 11. Mai 2013, 18:32
von Gary123456
Immer noch gleicher Fehler unter Python 2.7 (natürlich nach Python 2 Code konvertiert) - werde jetzt unter Python 3 testen

Re: Updatechecker

Verfasst: Samstag 11. Mai 2013, 18:35
von Gary123456
Auch unter Python 3 der gleiche Fehler?! Was läuft hier schief?