Milan hat geschrieben:
den cache bereits in der Klasse zu realisieren
Ok, bringt aber für meine Bedürfnisse wahscheinlich nicht's
Hier noch ein Update:
Code:
import sys, os, _winreg
class FileTypeInfo:
def __init__( self ):
self.RegHandler = _winreg.ConnectRegistry(None,_winreg.HKEY_CLASSES_ROOT)
def getInfo( self, FileExt ):
"""
Bsp.
FileExt = .chm
FileType = chm.file
FileTypeInfo = Kompilierte HTML-Hilfedatei
Programm = '"C:\\WINDOWS\\hh.exe" %1'
"""
FileType = self.readReg( FileExt )
if FileType == None:
return None
FileTypeInfo = self.readReg( FileType )
if FileTypeInfo == None:
# Gibt wohl keine weiteren Info's, dann nehmen wir
# lieber FileType, besser als nichts ;)
FileTypeInfo = FileType
Programm = self.readReg( FileType+"\shell\open\command" )
if Programm != None:
Test = Programm.replace("'",'"') # Vereinheitlichung
for i in Test.split('"'):
if os.path.isfile(i):
Programm = i.strip()
return [ FileTypeInfo, Programm ]
###
### Hilfs-Funktionen
###
def readReg( self, KeyName ):
try:
KeyHandler = _winreg.OpenKey(self.RegHandler, KeyName)
KeyInfo = _winreg.QueryValueEx(KeyHandler , "")[0]
except WindowsError:
return None
_winreg.CloseKey(KeyHandler)
return KeyInfo.encode("latin-1")
Nun wird versucht, die Programme als Pfad zu extrahieren und nicht nur einfach der ganze REG-String zurück gegeben...
Hier mal eine paar Beispiele, wobei sowas wie das Ergebnis von ".chm" ehr dir Regel ist und alle anderen ehr die Ausnahme.
Bei ".hlp" wird nicht nur "%SystemRoot%\\System32\\winhlp32.exe" zurück gegeben, weil "%SystemRoot%" von os.path.isfile() nicht als "Systemvariable" ausgewertet wird...
Code:
.chm
[u'Kompilierte HTML-Hilfedatei', u'C:\\WINXP\\hh.exe']
.hlp
[u'Hilfedatei', u'%SystemRoot%\\System32\\winhlp32.exe %1']
.exe
[u'Anwendung', u'"%1" %*']
.rat
[u'Rating System File', u'rundll32.exe msrating.dll,ClickedOnRAT %1']
.COM
[u'Anwendung f\xfcr MS-DOS', u'"%1" %*']
.DeskLink
[u'CLSID\\{9E56BE61-C50F-11CF-9A2C-00A0C90A90CE}', None]
EDIT: Hab bei
readReg() am ende ein
.encode("latin-1") hinzugefügt, damit Umlaute unterstützt werden...