Wozu diese Listen da sind, weiß ich doch und ich brauche sie auch.
Danke trotzdem für das Raussuchen der Links. Ich werde sie mir gleich ansehen.
Dateien öffne ich grundsätzlich über den "Total Commander".
Normales Klicken auf die jeweilige Datei = Öffnen mit dem Standardprogramm rechte Maustaste = "Öffnen mit" anwählen und das gewünschte Programm wählen.
Meine Probleme dabei:
1.) Wenn ich ein neues Programm als Standard zuweise ( egal ob direkt über diesen Dialog oder über Systemsteuerung -> Ordneroptioen -> Dateitypen ) taucht es in der Registry nicht als regulärer Eintrag auf, sondern nur unter "OpenWithList". Darum muß ich diese Listen aus der Registry einlesen und auswerten können.
2.) Wenn Windows für bestimmte Endungen seine fürchterlichen, eigenen "Programme" als Standard zuweist und man ändert das, wird die Änderung nicht zur neuen Basis erhoben, sondern von Windows wie ein Fremdkörper betrachtet. Man kann dann unter "Dateitypen (s.o.) nicht nochmal ändern, sondern allenfalls den angeblichen Standard wieder herstellen und erst dann was Neues zuweisen.
Diesen Windows-eigenen Mist (also die Programme) total zu löschen, habe ich mich nicht getraut und die
Einträge über "Dateitypen" (s.o.) erst komplett zu löschen und dann neu anzulegen, war mir immer viel zu mühsam. Windows krallt sich doch fast alles für seinen Schrott-Mediaplayer, seinen bescheuerten Bildbetrachter usw.
Für Grafiken will ich zum Betrachten und leichte Manipulationen (z.B. Größenänderungen, Ändern der Farbtiefe oder Konvertierung in andere Grafikformate) natürlich IrfanView und setze ihn zum Standard.
Viel ich aber echte Bildbearbeitung, kommt es auf den Anwendungszweck an, z.B. ob ich ein Morphprogramme nutzen will, eins zum Splitten bzw. Erzeugen von Animationen, z.B. der tollen animierten Smilies ( um aus Teilbildern neue zu basteln ), eins um aus normalen Fotos beispielsweise nahtlos aneinander reihbare Hintergrundgrafiken fürs Web zu basteln, ein anderes und GIMP benutze ich wegen seiner unübersichtlichen Handhabung in der Regel nur, um bei GIF und PNG transparente Hintergründe setzen zu können, weil ich kein anderes Programm habe, mit dem das geht.
Also allein für Grafiken 5 Programme, aber an erste Stelle der Auswahlliste setzt Windows dennoch immer sein blödes "Windows Bild- und Faxanzeige" und Paint. Na gut, Paint kann man wenigstens ganz entfernen.
Für Videodateien brauche ich VLC als Standard zur Wiedergabe, aber dann ein spezielles für die Videokamera, weil die noch mit Band und altem AVI arbeitet, und zur Bearbeitung mindestens AVIDEMUX. Zur Fertigstellung ein weiteres und natürlich einen universellen Formatkonverter = also 5, wozu Windows einem dann meist auch noch den Mediaplayer und/oder den Moviemaker unterjubelt.
Bei Grafiken und Videos hätte ich dann noch die Spezialprogramme für 3D (also echtes Stereo) ...
Für Sounddateien brauche ich auch mindestens 3 oder 4 Programme, je nach Dateityp.
Außer einfachem Betrachten, wozu ich meine Standards anstelle der von Windows setzen will, was alles mit portablen Programmen agedeckt werden kann, muß ich eben auch diese Auswahl für die anderen Anwendungszwecke haben. Davon sind zwar nur wenige portabel, aber das ist nicht entscheidend dafür, daß ich alle Zuweisungen aus der Registry auswerten (und später auch ändern) können will.
Die Umständlichkeiten der Windows-eigenen Methoden finde ich einfach widerlich. Statt alles in einer komplett übersichtlichen Liste zu zeigen, muß man immer mehrfach irgendwas anklicken, um dann aber auch nur einen winzigen Teil des Gesamten zu Gesicht zu bekommen. Und das dann zeitraubende zig Male.
Wenn also jemand weiß, wie ich an die Zuordungen aus HKEY_CURRENT_USER komme und insbesondere auch vor allen an "OpenWithList", fände ich es ganz toll, dieses Geheimnis mit mir und anderen zu teilen !
Nachtrag:
Der dritte Link (von winfaq) ist hilfreich.
Erste Versuche, den Schlüssel über ein weiteres reg.OpenKey zu öffnen, sieht vielversprechend aus.
HKEY_CURRENT_USER\ Software\ Microsoft\ Windows\ CurrentVersion\ Explorer\ FileExts\<Dateiendung>\OpenWithList
Man muß dann allerdings z.B. reg.ReadString('a'); für die erste Zuweisung benutzen und weiter mit "b" usw., wobei ich natürlich noch rausfinden muß, wie man ohne Angabe der Reihenfolgebuchstaben usw. die ganze Gruppe komplett liest. Immerhin scheint aber "a" immer zu funktionieren, sofern eine Zuweisung vorhanden ist. Das müßte dann auch der Standard sein und auf den kommt es mir in erster Linie an.
Ich habe mal meine aktuelle Ersetzung für "Button2Click" des Testbeispiels angehängt. Das ist nicht "die Lösung", sondern auch nur ein Testansatz. Was mir da teilweise an seltsamen Ergebnissen (auch für mir völlig unbekannte Dateitypen) geliefert wird, ist wunderlich. Da haben sich außerdem zum Teil auch mir völlig unbekannte Programme - vielleicht längst deinstalliert oder nie genutzt - breitgemacht