AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Datentypen in der Registry

Datentypen in der Registry

Ein Thema von delnu · begonnen am 16. Okt 2015 · letzter Beitrag vom 22. Okt 2015
Antwort Antwort
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.573 Beiträge
 
Delphi 12 Athens
 
#1

AW: Datentypen in der Registry

  Alt 20. Okt 2015, 10:06
Festinstallierte Protable Programme?
Portables wird nicht fest installiert, denn das ist gegen seine Natür.


Wie oft machst du sowas und wieviele PCs?

Wenn man es öfters und und mehrmals macht, dann erstell dir doch ein eigenes Windows-Setup, wo gleich alles Wichtige drin ist.
Men kann sowas auch durch Klonen der Festplatten erreichen. (machen die großen PC-Vermarkter auch nicht anders)
http://www.com-magazin.de/praxis/win...eren-7641.html
Beim Klonen muß man nur estwas mit den Lizenzen auspassen, bzw. beim ersten Start jeweils eigene Lizenzen einrichten.

http://www.microsoft.com/de-de/licen...e/default.aspx


Von vielen Programmen lassen sich die Setups per Batch ansteuern, womit du Diese sich auch selber richtig installieren lassen kannst.
USB-Stick oder Netzlaufwerk mit den Setups und überall einmal starten.


Auch wenn du es nicht hören wolltest ... Altes Delphi OK, aber wenn die PCs ins Internet gehen können sollen und das sowieso neu installiert wird, dann warum dann ein altes Windows?
Stehen die PCs nur irgendwo gemeinsam rum, dann kannst du es auch mit Terminalserver (Windows) versuchen.
Die Klienten entweder ohne eigenen Internetzugang oder auch gleich mit einem anderen OS.
Da ist es dann auch egal wie alt und leistungsschwach diese PCs sind.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (20. Okt 2015 um 10:12 Uhr)
  Mit Zitat antworten Zitat
delnu
(Gast)

n/a Beiträge
 
#2

AW: Datentypen in der Registry

  Alt 20. Okt 2015, 16:04
Obwohl ich eigentlich nicht vorhatte, themenfremde Beiträge zu kommentieren:

portables nicht installieren, aber Dateien zuweisen, warum ?

Installationen erzeugen unnützen Müll und beim Austauschen der Versionen reicht es, die Dateien in den entsprechenden Verzeichnisse zu ersetzen. Hätte ich welche der neueren (fürchterlichen) Firefox-Versionen fest installiert, hätte ich Probleme.

Mit portables lassen sich auch unterschiedliche Versionen nutzen, indem einfach das Verzeichnis umbenannt wird.

Warum überhaupt selbst zuweisen, statt es durch Programme machen zu lassen ? Microsoft selbst ist wohl das beste schlechte Vorbild für Hersteller anderer Anwenndungen, sich jeden nur denkbaren Dateityp zu krallen und entsprechend in der Regisry vermüllen. Für Audio-Dateien nehme ich z.B. lieber mplayerc statt VLC und mit Nero will ich z.B. nur ganz wenige Dateien geöffnet haben und z.B. die NRG-Dateien nicht standardmässig mit Nero Burning Rom, sondern mit ImageDrive.

Warum alte Delphi-Versionen ?
Als ich noch versucht habe, mit höheren Versionen als Delphi 1 erstellte Programme abwärtskompatibel zu dieser ersten Version zu gestalten, habe ich bemerkt, daß der umgekehrte Weg besser ist, also erst mit alten Versionen beginnen und erst danach auf Kompatibilität mit neuen Versionen herstellen. Momentan benutze ich weitgehend Delphi 5,solange etwas damit funktioniert. Nur wenn ich damit nicht auskomme, weil fremde Quelltexte eine höhere Version erfordern, benutze ich Delphi 7. Je neuer, desto komplexer, größere Exe-Dateien usw.

Und nicht zuletzt ist es unzumutbar, erneut wahnsinnig viel Geld auszugeben, nur weil es etwas Neueres gibt, obwohl das Alte seine Funktionalität natürlich nicht verloren hat und das meiste damit funktioniert.

Warum "veraltete" Windows-Versionen ?
Hätten die Hardwarehersteller sich nicht durch Microsoft nötigen lassen, so daß alle neueren Möglichkeiten bzw. Geräte (z.B. Netzwerk, Scanner, Video) Windows erfordern, wüde ich es mit Sicherheit GAR NICHT benutzen.

Windows 98 SE benötige ich noch für DOS, z.B. Assembler und Turbo Pascal. Im Windows-Modus sind (z.B. mit Delphi 1) noch nicht alle direkten Hardware-Zugriffe gesperrt. Alle späteren Versionen machen es Programmierern schwer. Außerdem gab es bei Windows 98 noch den bei späteren Versionen verschwundenen Midimapper. Der ist darum so wertvoll, weil es damit möglich ist, jedem Midikanal unterschiedliche Zielgeräte zuweisen zu können. Keine spätere Windows-Version bietet dies Möglichkeit mehr.

Windows XP habe ich nur schwer akzeptieren gelernt. Ohne wäre mir die Nutzung bestimmter Hardware leider unmöglich (weil Hardware-Hersteller auch hier wieder der Erpressung durch Winzigweich gefolgt sind) und mit XP lassen sich endlich auch Festplatten-Kapazitäten nutzen, die angeblich schon für Windows 98 hätten gelten müssen.

Warum keine neuen Windows-Versionen ? Je neuer, desto mehr Einschränkungen für den Anwender. Microsoft hat unter "Sicherheit" vor allem immer die eigene gemeint. Als ich mein Notebook kaufte, war Vista drauf. Allein die vielen neuen unnötigen "Dienste" waren mir ein Gräuel. Als mir dann der Konflikt zwischen automatischen Updates und einem Norton-Antivirusprogramm einen Totalcrash verursachte, habe ich nach Treibern für XP gesucht und Vista entsorgt.

Ein Bekannter gab mir eine "Studentenversion" von Windows 7. Nach der Installation war ich entsetzt. Selbst Zusatztools, um z.B. HLP-Dateien lesen zu können und die alte Menüstruktur wenigstens teilweise nachbilden zu können, haben mir keine wirkliche Freude gebracht. Also weg auch damit und XP drauf.

Warum Neues, nur weil es neu ist und alle meinen, sie müßten hinterher rennen, wenn es das Alte tut ?!

Warum keine automatisierte Installation z.B. aus einer ISO-Datei o.ä. ? Weil die Rechner zwar identisch sind, aber anders eingerichtet werden sollen, was bereits bei der Festplatten-Partionierung beginnt. Das einzig Identische sollen die Portables sein.

Übrigens ist die Hardware der alten Rechner neuer als die der meisten meiner anderen - und das für unter 20 € pro Stück.

So, jetzt habe ich alles Genauestens dargelegt und werde mich dazu nicht mehr äussern. Das alles hat nämlich mit dem Thema absolut NICHTS zu tun. Es geht um die Registry und nichts anderes !

Geändert von delnu (20. Okt 2015 um 16:13 Uhr) Grund: Neuformatierung desTextes und Schreibfehlerkorrektur
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Datentypen in der Registry

  Alt 20. Okt 2015, 19:35
Die
Zitat:
Ein besonderes Problem dabei sind "OpenWithList" und "OpenWithProgIds" ...
würde ich ignorieren, dort sind mehrere Auswahlmöglichkeiten für Programme angegeben, aber keine direkten Verknüpfungen, um z. B. eine Datei per Doppelklick sofort mit einem Programm zu öffnen.

Wenn ich das bei meinem XP in der Registry richtig sehe, verweisen die Einträge in den OpenWith... aber wieder auf Einträge unter HKEY_CLASSES_ROOT. Du solltest von daher dort keine neuen bzw. unter HKEY_CLASSES_ROOT nicht zu findende Verknüpfungen entdecken.

Das Auslesen von HKEY_CURRENT_USER, im Zweig "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts" sollte in etwa so funktionieren:
Delphi-Quellcode:
reg.rootkey := HKEY_CLASSES_ROOT;
if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts', False) then
...
Eigentlich musst Du die Logik, die Du schon implementiert hast nur geringfügig anpassen.
  Mit Zitat antworten Zitat
delnu
(Gast)

n/a Beiträge
 
#4

AW: Datentypen in der Registry

  Alt 20. Okt 2015, 22:34
Hallo !

Danke, daß Du mir meinen Ansatz angesehen hast.

Wenn das mal so einfach wäre mit "Eigentlich musst Du die Logik, die Du schon implementiert hast nur geringfügig anpassen." ...

Leider ist dabei nämlich nichts rausgekommen, obwohl ich Verschiedenes probiert habe.

Allerdings stimmt es (wie ich gerade geprüft habe), daß der Zweig durch
Zitat:
reg.rootkey := HKEY_CURRENT_USER;
if reg.OpenKey('Software\Microsoft\Windows\CurrentVer sion\Explorer\Fileexts', False) then
tatsächlich korrekt geöffnet wird. Zur Kontrolle habe ich mal ShowMessage benutzt.

TypeName wird nicht gefunden, weil nicht vorhanden, entsprechend auch der Rest nicht.
Es werden ausser der Extension keine weiteren Ergebnisse geliefert und darum taucht dann auch keine der gefundenen Extensions in der Gesamtliste auf. Die haben dann allenfalls "Application" und "ProgID", aber die meisten eben nur "OpenWithList" und "OpenWithProgIds".

Die kann ich also leider nicht ignorieren, denn viele meiner Zuweisungen für IrfanView sind nur dort (unter HKEY_CURRENT_USER im von Dir genannten Zweig) eingetragen. Ausserdem möchte ich durchaus wählen können, ob ich z.B. eine HTML-Datei mit Notepad++ öffne oder mit einem der unterschiedlich vielen zur Auswahl stehenden Browser. Wenn mir da also jemand einen Rat geben könnte, wäre das super.

Immerhin habe ich es jetzt (während des Schreibens des Beitrags teste ich) schon soweit geschafft, daß jetzt wenigstens schon die Extensions in die Liste übernommen werden. Aber wie ich an die paar vereinzelten "Application" und "ProgID" kommen soll, weiß ich nicht. Ich habe mal die momentane (noch sehr chaotische, weil unfertige) "Button2Click" als Textdatei angehängt. Einfach die bereits integrierte leere Prozedur ersetzen und im Objektinspektor "visible" auf true setzen.

Vielleicht weißt Du da weiter ? Deine bisherigen Tipps waren jedenfalls schon sehr nützlich. Danke nochmal !

Außerdem habe ich festgestellt, daß die von mir abgewandelte Grundmethode nicht alle Einträge berücksichtigt. Das hatte ich erst gemerkt, nachdem ich die Unit von http://www.delphipraxis.net/64577-re...unktionen.html ausprobiert habe. Die mußte zwar erst etwas fehlerbereinigt werden, aber die dort integrierte Prozedur "WriteExtList" ist gute Arbeit.

Nachtrag: Die hier angehängte Textdatei ist lediglich ein Replacement für eine gleichnamige (aber leere) Prozedur meines oben in der ZIP-Datei "reg.zip" enthaltenen Testes und ergibt (ohne dasselbe) wenig Sinn. Dieser Hinweis erfolgt, weil die Textdatei schon zweimal runtergeladen wurde, die ZIP-Datei aber nur einmal. Also nicht einfach die Textdatei runterladen und denken, die wäre für sich betrachtet irgendwie besonders informativ. Ganz im Gegenteil ! Das ist wirklich nur ein unfertiger Versuch, der bloß zusammen mit dem Testprog Sinn hat.
Angehängte Dateien
Dateityp: txt button2click.txt (3,0 KB, 5x aufgerufen)

Geändert von delnu (21. Okt 2015 um 21:18 Uhr) Grund: Hinweis nachgetragen
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Datentypen in der Registry

  Alt 22. Okt 2015, 08:21
Hallo,

hab' gerade mal geschaut, was es mit OpenWithList und OpenWithProdIDs auf sich hat:

Erklärung in (gruseligem deutsch): https://msdn.microsoft.com/de-de/lib...vs.120%29.aspx
Das englische Original: https://msdn.microsoft.com/en-us/library/bb166549.aspx

Grob erklärt: In diesen Listen findet man die Programme, die im Menü auf der rechten Maustaste im Explorer bei "Öffnen mit" aufgeführt werden, auch dann, wenn eine Dateiendung eigentlich einer anderen Anwendung fest zugeordnet ist.

Weitere Infos:
http://www.winfaq.de/faq_html/Conten...?h=tip1767.htm

Von daher solltest Du für Deine Aufgabenstellung diese beiden Listen ignorieren können, willst Du verhindern, dass Anwender andere Programme, als die von Dir zugewiesenen, per Explorer nutzt, musst Du diese Listen löschen.
  Mit Zitat antworten Zitat
delnu
(Gast)

n/a Beiträge
 
#6

AW: Datentypen in der Registry

  Alt 22. Okt 2015, 11:09
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
Angehängte Dateien
Dateityp: txt BTN2CLICK.TXT (2,2 KB, 3x aufgerufen)

Geändert von delnu (22. Okt 2015 um 12:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#7

AW: Datentypen in der Registry

  Alt 22. Okt 2015, 20:19
Mal ne blöde Frage: Wenn du sowieso Total Commander benutzt, wieso greifst du dann nicht auf dessen interne Verknüpfungen zurück? Dort kann man ebenfalls mehrere Programme definieren.

MfG Dalai
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz