VB Dateiendung einem Programm zuweisen

Moin Wissende,

wie kann ich mit VB, im Notfall nehme ich auch gerne Excel-Vba Code :smile:, mutmaßlich in der Registry auslesen, welches Programm mit welchen Dateiendungen verknüpft ist?

Neben Auslen möchte ich dann auch dort ändern können, also bestehende Zuweisungen löschen, umbiegen auf ein anderes Programme und auch einen neuen Dateityp wie „.xyz“ dort zuweisen können.

Unter

HKEY_CLASSES_ROOT
HKEY_LOCAL_MACHINE/Software/Classes

fand ich jeweils sehr viele Dateiendungen aufgelistet, wäre man da richtig?

Danke ^ Gruß
Reinhard

Moin, Reinhard,

zwei Beispiele unter VBA, ist im Prinzip immer das Gleiche:

 ' letztes Verzeichnis aus Registry holen
 LastSaveFileName = GetSetting(appname:=RegistryAppname, \_
 Section:=TxName, \_
 Key:=RegistryKey)

 ' aktuelles Verzeichnis in Registry ablegen
 If Len(SaveFileName) \> 0 Then
 SaveSetting RegistryAppname, \_
 TxName, \_
 RegistryKey, \_
 SaveFileName

Unter
HKEY_CLASSES_ROOT
HKEY_LOCAL_MACHINE/Software/Classes

fand ich jeweils sehr viele Dateiendungen aufgelistet, wäre
man da richtig?

Da bin ich nicht so sicher, da stehen erstmal alle Endungen drin, die der Windows-Installation jemals begegent sind.

Gruß Ralf

Hallo Reinhard,

ich darf doch oder? *gg*
Also Source poste ich nun. Das bekommst du schon selber hin :smile:
Wie du mit VB in die Registry schreiben und lesen kannst, das siehst du hier :smile: FAQ:2924

Mit deinen Vermutungen liegst du fast richtig :smile:
Also Relevant Schluessel HKEY_CLASSES_ROOT welchen ich mal kurzerhand nun HKEY nenne :smile:

In diesem Schluessel befinden sich die ganzen Extensions, wie du schon mit bekommen hast. Du kannst nun diese Extension alle auslesen und dann die dazugehörigen Programme und Icon’s. Diese Info’s befinden sich aber nicht unter HKEY und dann unter der Extension!

Nehmen wir einmal ein Bsp. aus meiner Registry.

Schluessel HKEY_CLASSES_ROOT -> .Tiff
Dort finde ich folgende Informationen
Standard
ContentType
PerceivedType
und noch 2 Unterschluessel

Diese daten wiederrum sind von Extension zu Extension unterschiedlich!

Bsp.

Schluessel HKEY_CLASSES_ROOT -> .TGA
Dort finde ich nur folgende Info
Standard

Wie man nun erkennen kann, hat jede Extension den Wert Standard.
Dieser ist vom Typ Reg_SZ(String)

Und genau diese eine Information reicht uns!

Was besagt uns die? Die Information ist lediglich ein Verweis in der Registry auf den eigentlichen Eintrag!

Kommen wir einmal zurueck zum Bsp

HKEY_CLASSES_ROOT -> .Tiff

Standard =TIFImage.Document
Content Type=image/tiff
PerceivedType=image

Wir lesen also nun den Key Standard aus und wissen das dieser den Wert TIFImage.Document hat.

In HKEY befinden sich nun die eigentlichen Daten. Ja aber wo sind sie?
Na wenn du nicht schon drauf gekommen bist. Dann ist hier die Lösung.
Diese Daten befinden sich in HKEY -> TIFImage.Document

Wenn wir uns nun den Schluessel mal anschauen sehen wir folgendes!
Standard=Nicht gesetzt
EditFlags=10000
FriendlyTypeName=@%SystemRoot%\System32\shimgvw.dll,-306
ImageOptionFlags=0
'1.Unterschluessel -> DefaultIcon
Standart =shimgvw.dll,4
2.Unterschluessel -> Shell
-> Unterschluessel open
etc.

Ich mag nun nicht alles aufschluesseln. Das würde den Rahmen sprengen *ggg*

Aber zu Deiner Frage, in Kurzform

Unter HKEY -> Extension, den Standardwert auslesen
Unter HKEY/Ausgelesener wert = Deine ganzen Info’s

Bedenke aber das es von Extension zu Extension Unterschiede geben kann, was die Infos belangt!

Du könntest zum Bsp. Den Standard Wert vom MP3 auslesen und den vom .JPG dann tausche die beiden mal und schreibe sie neu *gg*

Nun kennst du den Prinzipiellen Aufbau und solltest wissen wie du nun einen neuen Eintrag hinzufügen / aendern / löschen kannst :smile:

MfG Alex