Updatechecker

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
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

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
koenigssphinx
User
Beiträge: 14
Registriert: Samstag 11. Mai 2013, 10:51
Kontaktdaten:

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

Code: Alles auswählen

Königssphinx die 1. die Python kann
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

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.
Dami123
User
Beiträge: 225
Registriert: Samstag 23. Februar 2013, 13:01

Versuchs mal mit "/" statt "\".
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Gleicher Fehler. Ich check das mal an andere Pfäde.
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

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")
xeike
User
Beiträge: 83
Registriert: Donnerstag 28. Februar 2013, 09:58

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
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

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
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

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.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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')
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

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?
Flano
User
Beiträge: 43
Registriert: Sonntag 5. September 2004, 14:13

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
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Immer noch gleicher Fehler unter Python 2.7 (natürlich nach Python 2 Code konvertiert) - werde jetzt unter Python 3 testen
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Auch unter Python 3 der gleiche Fehler?! Was läuft hier schief?
Antworten