Dateitypen für eigenes Programm registrieren

  • Edit: Ergänzung (Danke an BigRox für den Hinweis.)

    Gesucht sind Informationen dazu, wie man die Dateitypen ".au3" und ".ppr" registriert, sodass diese Dateien bei Doppelklick mit PSPad geöffnet werden. NICHT gesucht ist das Registrieren für das "Öffnen mit" Kontextmenü des Windows Explorers. 8o

    Edit Ende

    In PSPad4AutoIt3 soll dem User in den Einstellungen des Improvement Kits eine Möglichkeit gegeben werden, AU3 und PPR (PSPad-Project) Dateien für PSPad zu registrieren. In den PSPad-eigenen Einstellungen gibts diese Möglichkeit zwar schon, die ist jedoch allgemein gehalten (PSPad kann für über 200 Programmier-Sprachen verwendet werden) und ziemlich versteckt. Im ImpKit will ich dem User eine einfache Einstellmöglichkeit zur Verfügung stellen, spezialisiert auf ".au3" und ".ppr" Dateien.

    Die Registry hat seit jeher Rätsel aufgegeben und seit 64 Bit Windows'e bei der breiten Masse Einzug gehalten haben, gibts noch mehr Stolperfallen. Recherchen im INet haben zum Thema "Dateityp registrieren", "Dateiendung mit Programm verknüpfen", usw. unsäglich viele Treffer gebracht. Nachdem ich "alle" 8o ausprobiert habe, kam die Ernüchterung. Die meisten sind auf Win 10 einfach nicht mehr gültig und funktionieren schlichtweg nicht. Auch Lösungen mit "ASSOC" und "FTYPE" funktionieren nicht zuverlässig. Deshalb habe ich mich entschlossen, die benötigten Einträge in der Registry herauszufinden und mit meinem Script einzutragen, sobald der User das OK gibt.

    Was ich herausgefunden habe:

    Es gibt mehrere Stellen in der Registry, bei einigen davon sind unterschiedliche Programme zum Öffnen des Dateityps eingetragen. Deshalb weiß ich nicht mit Sicherheit, welche zum zuverlässigen Registrieren einer Dateiendung tatsächlich benötigt werden. Ich hatte bei Tests auf Win 10 den Eindruck, dass die ersten beiden Eintrags-Paare ausreichen (blau gefärbt).

    Registry Einträge

    "HKEY_CLASSES_ROOT\.au3\" => (Standard), REG_SZ, au3file

    "HKEY_CLASSES_ROOT\au3file\Shell\Open\Command\" => "Pfad zum Prog, mit dem AU3s geöffnet werden" "%1"

    "HKEY_CLASSES_ROOT\.ppr" => (Standard), REG_SZ, PSPad.project

    "HKEY_CLASSES_ROOT\PSPad.project\Shell\Open\Command" => "Pfad zum Prog, mit dem PPRs geöffnet werden" "%1"

    Im Folgenden habe ich die Einträge für ".ppr" Dateien weggelassen. Sie sind entsprechend dem obigen Eintrags-Paar für die jeweiligen folgenden Eintrags-Paare.

    "HKEY_CURRENT_USER\Software\Classes\.au3" => (Standard), REG_SZ, au3file

    "HKEY_CURRENT_USER\Software\Classes\au3file\Shell\Open\Command\" => "Pfad zum Prog, mit dem AU3s geöffnet werden" "%1"

    "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.au3\" => (Standard), REG_SZ, au3file

    "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\au3file\Shell\Open\Command\" => "Pfad zum Prog, mit dem AU3s geöffnet werden" "%1"

    "HKEY_USERS\S-1-5-21-3283306847-3230872699-3813378835-1001\Software\Classes\.au3\" => (Standard), REG_SZ, au3file

    "HKEY_USERS\S-1-5-21-3283306847-3230872699-3813378835-1001\Software\Classes\au3file\" => "Pfad zum Prog, mit dem AU3s geöffnet werden" "%1"

    "HKEY_USERS\S-1-5-21-3283306847-3230872699-3813378835-1001_Classes\.au3\" => (Standard), REG_SZ, au3file

    "HKEY_USERS\S-1-5-21-3283306847-3230872699-3813378835-1001_Classes\au3file\Shell\Open\Command" => "Pfad zum Prog, mit dem AU3s geöffnet werden" "%1"

    Folgende Einträge sind IMHO nicht relevant:

    "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.au3\OpenWithProgids\" au3file, REG_NONE, Binärwert ... 0

    "HKEY_USERS\S-1-5-21-3283306847-3230872699-3813378835-1001\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.au3\OpenWithProgids\" au3file, REG_NONE, Binärwert ... 0

    "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ApplicationAssociationToasts" au3file_.au3

    "HKEY_USERS\S-1-5-21-3283306847-3230872699-3813378835-1001\Software\Microsoft\Windows\CurrentVersion\ApplicationAssociationToasts" au3file_.au3

    Leider sind mir einige Vorgänge in der Registry nicht ganz klar. So kann ich z.B. den Schlüssel "HKEY_CLASSES_ROOT\.au3\" löschen, dann drücke ich auf F5 (Aktualisieren) und schwups ist der Schlüssel wieder da! =O:S:/

    Meine Fragen sind entsprechend recht allgemein formuliert: Welche Einträge sind in der Registry zu setzen, um ".au3" und ".ppr" Dateien mit PSPad zu "verknüpfen" (registrieren)? Können die gleichen Einträge unter Win 7 - 10 verwendet werden? Gibt es eine einfachere oder sicherere Methode?

    Edit 2:

    Viele Fragen zu den Vorgängen in der Registry wurden geklärt, nachdem "TheXman" im EN Forum einen Link zu MS Docs "HKEY_CLASSES_ROOT Key" gepostet hat, wo all das steht, "was Sie schon immer über Registry-Hauptschlüssel wissen wollten"! :party: Das neue Wissen spiegelt sich in den Postings ab #10 wider.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

    4 Mal editiert, zuletzt von Professor Bernd (7. März 2021 um 17:01)

  • Hallo Professor Bernd,

    ich habe auch schon einiges probiert, um mal dahinterzukommen, wie das geht.

    Dabei hatte ich immer irgendwie das Gefühl, dass die von Microsoft da selber nicht mehr so ganz durchblicken.

    Die versuchen immer wieder die Registrierungen ihrer eigenen Programme (z.B. MS-Edge...) wiederherzustellen und dadurch wird das ganze wohl auch immer komplizierter (der Dateityp "pdf" ist da z.B. so ein Fall).


    MfG:

    BigRox

    3 Mal editiert, zuletzt von BigRox (28. März 2021 um 15:26)

  • Hallo BigRox.

    Dabei hatte ich immer irgendwie das Gefühl, dass die von Microsoft da selber nicht mehr so ganz durchblicken.

    Hi hi, ich glaube, das geht vielen so! ;) Die Windows Registry ist ein riesiger "Apparat", mit dem man sich leicht Wochen und Monate beschäftigen könnte.

    Vielen Dank für deine Dokumentation und das Script "_DateitypAnlegen.au3". Sieht so aus, als beschäftigst du dich schon länger damit. Es sind viele interessante Informationen drin, die sich auf das "Öffnen mit" Kontextmenü des Win Explorers beziehen. Coole Sache! :rock: - Es ist aber ein anderes Thema, als das, um das es hier in diesem Thread geht. Wir können uns gerne in einem anderen Thread oder per PN darüber unterhalten, das ist ein echt interessantes Thema!

    Das hat mich auf einen wichtigen Gedanken gebracht, nämlich dass man meine Beschreibung aus Posting #1 falsch verstehen kann. :whistling: Das werde ich im Posting #1 ergänzen. Vielen Dank für den (indirekten) Hinweis! :saint:

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Hallo Professor Bernd,

    du kannst unter Windows 10 nicht einfach mit einigen Registry-Einträge, Dateitypen mit einem Programm verknüpfen.

    Erst wenn man den Dateityp unter: "Einstellungen | Apps | Standard-Apps | Standard-Apps nach Dateityp auswählen" manuell auswählt, wird der

    Registry-Schlüssel:

    "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.au3\UserChoice"

    mit dem Eintrag "Hash" erstellt (den Schlüssel kann man zwar erstellen aber den Wert nicht).

    Den Wert für "Hash" kann Windows nur selber erstellen, da der Algorithmus dafür von Microsoft geheim gehalten wird.

    Das ist ein Sicherheitsfeature von Windows 10, damit man die Dateizuordnungen nicht einfach per Script o.ä. ändern kann.

    (Ich habe leider bis heute nicht rausbekommen, warum es gelegentlich auch ohne den "UserChoice"- Schlüssel geht, ich vermute dass es irgendwo eine gut versteckte und verschlüsselte "White List" gibt).

    Daher verwende ich in meinen Scripten, an den entsprechenden Stellen, diese Funktion um Dateitypen die ich zuvor mit der Funktion aus Post #2 in die Registry eingetragen habe, manuell zuzuordnen (das ist zwar etwas umständlich, aber es geht damit zuverlässig):

    _DateitypZuordnen.au3

    MfG:

    BigRox

    Einmal editiert, zuletzt von BigRox (8. März 2021 um 13:53)

  • "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.au3\UserChoice"

    Bist du sicher, dass dieser Einträg benötigt wird, um AU3 Dateien per Doppelklick zu öffnen?

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Zwar etwas OffTopic, aber wer schonmal den Acrobat Reader genutzt hat hat sicher schon den sehr ungewöhnlichen Workaround von Adobe gesehen um den Acrobat Reader zum Standardprogramm für PDF Dateien zu machen. Hab mich schon sehr lange gefragt wieso eine große Firma wie Adobe auf solche Tricks zurückgreifen muss und die notwendigen Registry Schlüssel nicht einfach selbst setzt.

    Adobe umgeht das Problem durch Anzeigen des Dateieigenschaftenn Dialogs einer mitgelieferten PDF Datei und fordert den User dann zum anklicken des "Ändern" Buttons bei "Öffnen mit" über eine Overlay GUI auf. Scheinbar ist das die einzigste zuverlässige Methode für PDF Dateien, andernfalls hätte man das sicher nicht so primitiv bei Adobe gelöst.

    Aber auch das Setzen des Standard Browsers scheint nicht ganz so simpel zu sein. Firefox öffnet dafür einfach den Dialog von Windows in dem die Standard Apps festgelegt werden können.

    Microsoft hat hier definitiv Hürden eingebaut, die es so in früheren Windows Versionen nicht gab.

  • Uff! *stöhn* =O Ich fürchte, ihr habt recht. - Und jetzt weiß ich grad gar nicht, wie ich das lösen soll.

    Vielleicht hilft folgendes: SciTE scheint das Registrieren von .au3 Dateien ja zu beherschen. Ich könnte auf einem Test-PC ein Windows neu aufsetzen, sodass dort noch nie ein Programm für .au3 und .ppr registriert war. Einen RegShot erstellen, SciTee installieren, zweiten RegShot machen und Einträge ansehen. - Mal sehen. :/

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Bist du sicher, dass dieser Einträg benötigt wird, um AU3 Dateien per Doppelklick zu öffnen?

    Hallo,

    das ist so ein Fall, bei dem es komischerweise auch ohne "UserChoice" geht (daher die Vermutung mit der gut versteckten "WhiteList"....)

    Da ich auch PSPad auf meinem Rechner habe, versuche ich mal, ob ich .au3-Dateien auch ohne diesen Schlüssel, auf PSPad registriert bekomme.

    Ich vermute aber schon jetzt, das es nicht geht:(.

    Microsoft hat hier definitiv Hürden eingebaut, die es so in früheren Windows Versionen nicht gab.

    So ist es. Microsoft versucht einem die Sache so schwer zu machen, damit möglichst viele gar nicht versuchen, ein anderes (besseres) Programm einzusetzen.

    Und das schlimmste ist, bei der nächsten Windows-Version, kann alles mal wieder ganz anders sein, damit die bisherigen bekannten Tricks nicht mehr funktionieren.

    Das wird dann wohl irgendwann dazu führen, dass Microsoft das ganze mit den Dateizuordnungen neu schreiben muss, weil sie selber nicht mehr durchblicken:D(das geht irgendwann wie mit WindowsXP, da hat man sich ja auch von einigen "Altlasten" verabschieden müssen, weil es vor lauter Ausnahmen usw. nicht mehr anders ging).

    Aber auch das Setzen des Standard Browsers scheint nicht ganz so simpel zu sein. Firefox öffnet dafür einfach den Dialog von Windows in dem die Standard Apps festgelegt werden können.

    Das Auswählen ist leider nicht das einzige Problem.

    Versuch mal ein Programm in die Listen zur Auswahl zu bekommen. Ich habe es mal mit Opera-Mail gemacht, dass war vielleicht ein Akt.

    Vielleicht hilft folgendes: SciTE scheint das Registrieren von .au3 Dateien ja zu beherschen. Ich könnte auf einem Test-PC ein Windows neu aufsetzen, sodass dort noch nie ein Programm für .au3 und .ppr registriert war. Einen RegShot erstellen, SciTee installieren, zweiten RegShot machen und Einträge ansehen. - Mal sehen. :/

    Das habe ich auch schon mal ausprobiert, es hat nichts gebracht.

    Aber ein Filevergleich könnte etwas bringen.


    MfG:

    BigRox

  • Kennt ihr das, wenn man z.B. tagelang erfolglos versucht ein Kreuzworträtsel zu lösen und dann kommt jemand mit den Antworten? So fühle ich mich gerade, nachdem "TheXman" im EN Forum einen Link zu MS Docs "HKEY_CLASSES_ROOT Key" gepostet hat, wo all das steht, "was Sie schon immer über Registry-Hauptschlüssel wissen wollten"! :party:

    Ok, damit sind wir einen großen Schritt weiter. Für meine Zwecke ist somit HKEY_LOCAL_MACHINE\Software\Classes ausschlaggebend. Jetzt fehlt nur noch die Info, ob es genügt, die Dateiendungen und dann die Dateitypen zu registrieren, oder ob zusätzliche Einträge nötig sind, wie BigRox schon geschrieben hat. => Happy testing. :saint:

    Weiß jemand, ob und wie man als Standard-Admin (Win 7 und 10) in HKEY_LOCAL_MACHINE\Software\Classes schreiben kann, OHNE dass die UAC erscheint? Ist zwar nicht so super wichtig, wäre aber gut zu wissen.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Hallo Professor Bernd,

    hier meine ersten Ergebnisse.

    Auf meinem Rechner (Windows 10 Pro 64Bit) ist Autoit, SciTe4AutoIt3 und PSPad installiert.

    Ich habe in PSPad als Dateityp der mit PSPad geöffnet werden soll ".au3" eingegeben.

    Dadurch fügt PSPad in seiner ini-Datei, im Abschnitt "[Registered FileTypes]"

    .au3 hinzu.

    Das reicht bei mir schon, nach einem Doppelklick auf eine .au3, legt PSPad sofort los und öffnet diese Datei.

    Die anderen notwendigen Registry-Schlüssel legt AutoIt und SciTe schon an.

    Zum ersten währe da der "HKCU\.au3", mit seinem Standardwert "au3file" (dieser Schlüssel ist für au3-Dateien zuständig.

    Dann währe da natürlich auch der Schlüssel "HKCU\au3file". Da steht das anzuzeigende Icon (Defaulticon) und das gewünscht Programm

    (Shell | Open | command).

    Wenn man in dem "Open"-Schlüssel als Standardwert z.B. "Mit PSPad öffnen" einträgt, so erscheint dies im Kontextmenü.

    Im Schlüssel "Shell" steht als Standardwert der Schlüssel der bei einem Doppelklick ausgewertet werden soll.

    Wenn es z.B. unter "Shell" mehrere Unterschlüssel gäbe (open, edit, print...) so gibt der Standardwert an, welscher Unterschlüssel für die Aktion bei einem Doppelklick zuständig ist (die Aktion wird auch fett im Kontextmenü angezeigt.

    So jetzt probiere ich das ganz auch noch mal auf einem anderen Rechner, mit ganz neuer Installation.

    MfG:

    BigRox

  • Hallo Professor Bernd,

    hier die neusten Ergebnisse der letzten Tests.

    Ich habe auf einem neuen BS zuerst die "autoit-v3-setup_3.3.14.5.exe"-Datei, und danach die "SciTE4AutoIt3_4.1.0.exe" installiert.

    Danach habe ich die Datei "pspad505_setup.exe" installiert.

    Bei PSPad habe ich keinerlei Einstellungen geändert.

    Dann habe ich einen Registry-Schlüssel folgendermaßen geändert:

    AutoIt3Script ganz neu.txt

    (die Dateiendung habe ich auf txt geändert, da das Forum reg-Dateien nicht mag).

    Als letztes musste ich noch den .au3-Dateityp unter: "Einstellungen | Apps | Standard-Apps | Standard-Apps nach Dateityp auswählen"

    dem "Text Editor" (das ist PSPad) zuordnen. Als zugeordnetes Standardprogramm wird zwar schon "Text Editor" angezeigt, aber der "Text Editor" ist in Wirklichkeit nicht zugeordnet (das ist eben auch einer der vielen Microsoft-Effekte?().

    Wenn man das nicht macht, so erscheint die "Öffnen mit"-Frage.

    Danach öffnet PSPad au3-Dateien auch sofort per Doppelklick.

    MfG:

    BigRox

  • Cool dass du die Tests gemacht hast! :)

    Ich habe auf einem neuen BS ...

    Ich vermute mal Windows 10? Das würde mit "Einstellungen | Apps | Standard-Apps | Standard-Apps nach Dateityp auswählen" zusammen passen. :saint:

    Als letztes musste ich noch den .au3-Dateityp unter: "Einstellungen | Apps | Standard-Apps | Standard-Apps nach Dateityp auswählen"

    dem "Text Editor" (das ist PSPad) zuordnen.

    Das ist natürlich nicht Sinn der Sache, da die Registrierung per Script durchgeführt werden soll. :(

    Dann habe ich einen Registry-Schlüssel folgendermaßen geändert:

    AutoIt3Script ganz neu.txt

    Deine Schlüssel beziehen sich alle auf AutoIt und SciTE, aber PSPad4AutoIt3 soll voll portabel werden und somit unabhängig von anderen Programmen und deren Registry-Einträgen. Die von dir genannten Schlüssel würden PSPad NICHT für .au3 Dateien registrieren, wenn AutoIt und SciTE NICHT installiert sind. 8o

    Diese Schlüssel sind in HKEY_CLASSES_ROOT. Mittlerweile weiß ich, dass das NICHT der richtige Platz dafür ist, siehe was ich in Posting #10 zu MS Docs "HKEY_CLASSES_ROOT Key" geschrieben habe. Dort findet man sehr wichtige Informationen über die für uns relevanten Registry-Hauptschlüssel:

    • HKEY_CLASSES_ROOT
    • HKEY_CURRENT_USER
    • HKEY_LOCAL_MACHINE

    Ich will jetzt hier kein Tutorial schreiben, sondern eine kurze Zusammenfassung meiner Erkenntnisse aus MS-Docs geben.

    HKEY_CLASSES_ROOT: "... ist in erster Linie für die Kompatibilität mit der Registrierung in 16-Bit-Windows gedacht" und "... bietet eine Ansicht der Registrierung, die die Informationen aus diesen beiden Quellen* zusammenführt." (* HKEY_CURRENT_USER und HKEY_LOCAL_MACHINE)

    Auszug aus MS Docs 'HKEY_CLASSES_ROOT Key'

    Original: MS Docs "HKEY_CLASSES_ROOT Key". - Übersetung mit DeepL:

    Die Informationen zur Klassenregistrierung und Dateinamenerweiterung werden unter den Schlüsseln HKEY_LOCAL_MACHINE und HKEY_CURRENT_USER gespeichert. Der Schlüssel HKEY_LOCAL_MACHINE\Software\Classes enthält Standardeinstellungen, die für alle Benutzer auf dem lokalen Computer gelten können. Der Schlüssel HKEY_CURRENT_USER\Software\Classes enthält Einstellungen, die nur für den interaktiven Benutzer gelten. Der Schlüssel HKEY_CLASSES_ROOT bietet eine Ansicht der Registrierung, die die Informationen aus diesen beiden Quellen zusammenführt. HKEY_CLASSES_ROOT stellt diese zusammengeführte Ansicht auch für Anwendungen bereit, die für frühere Versionen von Windows entwickelt wurden.

    Die benutzerspezifischen Einstellungen haben Vorrang vor den Standardeinstellungen. Zum Beispiel könnte die Standardeinstellung eine bestimmte Anwendung für die Verarbeitung von .doc-Dateien vorsehen. Ein Benutzer kann diese Einstellung jedoch außer Kraft setzen, indem er eine andere Anwendung in der Registrierung angibt.

    Somit sind für uns nur HKEY_CURRENT_USER und HKEY_LOCAL_MACHINE relevant. Das deckt sich mit meinen Tests und erklärt das scheinbar seltsame Verhalten der Registry, das du, misterspeed, ich und viele andere beobachtet haben. In Wirklichkeit hat dieses seltsame Verhalten Methode! :P

    Füge z.B. der Registry auf deinem Test-Rechner mal folgendes hinzu und doppelklicke dann auf eine .au3 Datei:

    "HKEY_CURRENT_USER\Software\Classes\.au3" => (Standard), REG_SZ, au3file

    "HKEY_CURRENT_USER\Software\Classes\au3file\Shell\Open\Command\" => (Standard), REG_SZ, notepad "%1"

    Dann wird alles andere überschrieben und die .au3 Datei mit Notepad geöffnet. - Aus diesem und den vorgenannten Gründen ist es wichtig, die Vorgänge von "Merged View of HKEY_CLASSES_ROOT" zu verstehen und KEINE Schlüssel in HKEY_CLASSES_ROOT zu ändern, weil das zu unerwünschten Ergebnissen führen kann. 8)

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • @Proffesor Bernd,

    Ich vermute mal Windows 10? Das würde mit "Einstellungen | Apps | Standard-Apps | Standard-Apps nach Dateityp auswählen" zusammen passen. :saint:

    Da vermutest du völlig richtig.

    Deine Schlüssel beziehen sich alle auf AutoIt und SciTE, aber PSPad4AutoIt3 soll voll portabel werden und somit unabhängig von anderen Programmen und deren Registry-Einträgen. Die von dir genannten Schlüssel würden PSPad NICHT für .au3 Dateien registrieren, wenn AutoIt und SciTE NICHT installiert sind. 8o

    Wenn ich das richtig verstehe, willst du AutoIt komplett in PSPad integrieren, sodass du nur noch "PSPad4AutoIt3" auf einem anderen Rechner ausführen musst und dann ein komplettes AutoIt mit PSPad als Editor hast, und das ganze soll ohne Installation gehen.

    Dann darfst du aber nichts in die Registry schreiben, sonst ist ja nichts mit portabel, oder nach jedem Beenden von "PSPad4AutoI3" ist erstmal groß Reinemachen angesagt.

    Somit sind für uns nur HKEY_CURRENT_USER und HKEY_LOCAL_MACHINE

    Sonderbarerweise wirkt sich bei mir jede Änderung in "HKCR" sofort auch auf "HKCU..." und "HKLM..." aus.

    So viel ich weiß, stehen in "HKCU..." die Schlüssel für den momentan angemeldeten User und in "HKLM..." die Schlüsse für alle User.

    Je nachdem welcher User angemeldet wird, werden die Schlüssel aus "HKCU..." und "HKLM..." in "HKCR" zusammengeführt und das was da steht, wird von allen Programmen ausgewertet.

    Man könnt eigentlich auch ganz auf "HKCR" verzichten und nur die entsprechenden Schlüssel in "HKCU..." und "HKLM..." auswerten, aber viele Programme bestehen nun mal auf "HKCR" und somit muss "HKCR" wegen der Kompatibilität bestehen bleiben.

    MfG:

    BigRox

  • Wenn ich das richtig verstehe, willst du AutoIt komplett in PSPad integrieren, sodass du nur noch "PSPad4AutoIt3" auf einem anderen Rechner ausführen musst und dann ein komplettes AutoIt mit PSPad als Editor hast, und das ganze soll ohne Installation gehen.

    Nicht ganz. ;) Es wird KEIN vollständiges AutoIt in PSPad integriert. Mit unabhängig von AutoIt meine ich, unabhängig von einer AutoIt-Installation des Users. Stell es dir vor wie bei jedem anderen Editor: OHNE AutoIt (des Users) kann der Editor immer noch SEINE EIGENEN Features zur Verfügung stellen.

    Die Betonung liegt auf SEINE EIGENEN Funktionen! Zum Beispiel kann man eine .au3 Datei in PSPad öffnen, der Code wird schön bunt gehighlightet, du kannst "msg" eingeben, drückst die Autovervollständigung und PSPad macht "MsgBox" daraus, CallTips werden dir angezeigt, wenn du Shift+Ctrl+Space innerhalb von Funktions-Klammern drückst, uvm.

    • Wenn der User zudem noch AutoIt installiert hat, dann kann PSPad4AutoIt3 Scripts ausführen, compilieren und die AutoIt-Hilfe anzeigen.
    • Wenn der User KEIN AutoIt installiert hat, kann er immer noch alle PSPad-internen Features benutzen, aber halt OHNE "Run", "Compile", usw. 8o

    Auch das Registrieren von .au3 Dateien soll entsprechend unabhängig vom AutoIt des Users sein, denn natürlich soll er .au3 Dateien per Doppelklick in PSPad öffnen und bearbeiten können. :)

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Sonderbarerweise wirkt sich bei mir jede Änderung in "HKCR" sofort auch auf "HKCU..." und "HKLM..." aus.

    Da steht so in den MS Docs 8o

    MS Docs 'HKEY_CLASSES_ROOT Key'

    If you write keys to a key under HKEY_CLASSES_ROOT, the system stores the information under HKEY_LOCAL_MACHINE\Software\Classes. If you write values to a key under HKEY_CLASSES_ROOT, and the key already exists under HKEY_CURRENT_USER\Software\Classes, the system will store the information there instead of under HKEY_LOCAL_MACHINE\Software\Classes.

    So viel ich weiß, stehen in "HKCU..." die Schlüssel für den momentan angemeldeten User und in "HKLM..." die Schlüsse für alle User.

    Je nachdem welcher User angemeldet wird, werden die Schlüssel aus "HKCU..." und "HKLM..." in "HKCR" zusammengeführt und das was da steht, wird von allen Programmen ausgewertet.

    Man könnt eigentlich auch ganz auf "HKCR" verzichten und nur die entsprechenden Schlüssel in "HKCU..." und "HKLM..." auswerten, aber viele Programme bestehen nun mal auf "HKCR" und somit muss "HKCR" wegen der Kompatibilität bestehen bleiben.

    Ich bin der Überzeugung, die Regsistry ist eine Frau! :D Die ist sooo kompliziert! :P

    • HKEY_CLASSES_ROOT <= bietet eine Ansicht der Registry, die die Informationen aus den beiden folgenden Quellen zusammenführt.
    • HKEY_CURRENT_USER\Software\Classes <= enthält Einstellungen, die nur für den interaktiven Benutzer gelten.
    • HKEY_LOCAL_MACHINE\Software\Classes <= enthält Standardeinstellungen, die für alle Benutzer auf dem lokalen Computer gelten können.

    HKEY_CLASSES_ROOT merged also die Einstellungen aus den beiden anderen Registry-Zweigen. Dabei gilt, dass HKCU Keys die Keys aus HKLM überschreiben. Das bedeutet aber NICHT, dass man seinen Kram einfach in HKCU schreiben kann und keiner kann einem was! AutoIt hat in HKLM weitere Schlüssel angelegt, die dann wiederum das Verhalten "übertrumpft", das man mit den Schlüsseln von HKCU erreichen wollte!

    Hier meine Überlegungen, um Einträge in die Registry zu schreiben, damit .au3 Dateien per Doppelklick mit PSPad geöffnet werden.

    Möglich wäre das Schreiben in die oben genannten 3 Schlüssel: HKCR, HKCU und HKLM. Um unerwünschte Ergebnisse zu vermeiden, vor denen die genannten MS Docs warnen, will ich HKCR NICHT benutzen. Bleiben also noch HKCU und HKLM. - Vorerst habe ich HKCU im Sinn, was folgende Vorteile hat:

    1. Es werden KEINE Admin-Rechte benötigt, um Einträge zu schreiben.
    2. PSPad schreibt mit seiner eigenen Registrier-Funktion seine Einträge in HKCU, weshalb sich dessen Einträge dann mit meinen "vertragen". Wer weiß was passiert, wenn ich in HKLM schreiben würde und PSPad in HKCU schreibt!? =O
    3. Wenn ich in HKCU schreibe, werden keine Schlüssel in HKLM überschrieben, geändert oder gelöscht! Dadurch ist ein Rückgängigmachen möglich, bei dem der vorherigen Zustand wiederhergestellt werden kann.

    Für unsere Zwecke habe ich habe ich mir angesehen, was AutoIt und PSPad in die Registry schreiben (SciTE fügt zwar eigene Schlüssel hinzu, ändert aber nichts an den vorhandenen und wird von mir hier nicht extra erwähnt.)

    • AutoIt schreibt in HKLM. Für uns relevant sind die 2 Einträge: ".au3" und "AutoIt3Script".
    • PSPad schreibt in HKCU. Für uns relevant sind die 2 Einträge: ".au3" und "au3file".

    Laut MS Docs sollten die Einträge in HKCU die Einträge in HKLM überschreiben. Das tun sie auch, aber nur, wenn sie in beiden Zweigen vorhanden sind. Das trifft aber für "AutoIt3Script" NICHT zu. Damit unsere Einträge für PSPad wirksam werden, muss somit auch in HKCU ein Eintrag für "AutoIt3Script" erstellt werden, mit PSPad als Anwendung. Somit sind für PSPad 3 Einträge zu scheiben:

    • ".au3"
    • "au3file"
    • "AutoIt3Script"

    Ich liebe Ordnung! :) Mit diesen Einträge wäre es wie o.g. möglich, beim Deregistrieren diese 3 Einträge in HKCU zu löschen und dadurch den vorherigen Zustand wiederherzustellen, sodass z.B. .au3 Dateien per Doppelklick wieder mit SciTE geöffnet würden.

    Dazu mache ich derzeit Tests, die unter Win 7, 32 Bit funktioniert haben. Wie das mit Win 7 und Win 10 64 Bit aussieht, kann ich noch nicht sagen. Bei anderen Teilaufgaben gab es da schon Schwierigkeiten. Hast du/habt ihr gewusst dass manche Aufrufe mit RunWait(@ComSpec & " /c " & "commandName") unter x32 funktionieren und unter x64 nicht!? Da hab ich mir einen Wolf gesucht, bis ich herausgefunden habe, worand das liegt. :huh: Musashi würde jetzt sagen: "Den Lerneffekt nimmt dir niemand mehr!" :D

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • OFF-TOPIC :

    Musashi würde jetzt sagen: "Den Lerneffekt nimmt dir niemand mehr!" :D

    Dem ist ja auch so. Allerdings müssen Lerneffekte nicht per Definition erbaulich sein ;).

    Ich bin der Überzeugung, die Registry ist eine Frau! :D Die ist sooo kompliziert! :P

    Da z.B. das deutsche Steuerrecht zu wahrscheinlich 95% von Männern entwickelt wurde, wäre ich mir da nicht so sicher :P.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Professor Bernd,

    hier nun die Ergebnisse der neuen Tests.

    Als BS verwende ich wiederum ein ganz jungfräuliches Windows10 Pro 64bit.

    Darauf habe ich nur die Dateien aus der "pspad505en.zip" kopiert, also die portable Version von PSPad.

    In PSPad habe ich keinerlei Einstellungen usw. gemacht.

    Anschließend habe ich folgende vier Dateien in die Registry importiert:

    au3file HKLM.txt

    au3file HKCU.txt

    .au3 HKCU.txt

    .au3 HKLM.txt

    Dies ergibt im Schlüssel "HKCR" folgendes (da habe ich aber nur mal nachgesehen, was da danach so steht):

    au3file HKCR.txt

    .au3 HKCR.txt

    Danach kann ich sofort au3-Dateien per Doppelklick mit PSPad öffnen.

    Dabei gilt, dass HKCU Keys die Keys aus HKLM überschreiben.

    Das wir z.B. dafür gebraucht das neue Benutzer z.B. txt-Dateien Standardmäßig mit Notepad öffnen können und du kannst txt-Dateien aber mit PSPad öffnen.

    Es werden KEINE Admin-Rechte benötigt, um Einträge zu schreiben.

    Also ich kann die Einträge problemlos ohne UAC-Meldung oder Admin-Rechte usw. in "HKLM\Software\Classes" schreiben.

    Das geht auf jedem meiner vier Rechner und auch sofort bei einem absolut jungfräulichen Windows 10.

    MfG:

    BigRox

  • Also ich kann die Einträge problemlos ohne UAC-Meldung oder Admin-Rechte usw. in "HKLM\Software\Classes" schreiben.

    Das geht auf jedem meiner vier Rechner und auch sofort bei einem absolut jungfräulichen Windows 10.

    Wie sieht denn dein AutoIt-Code aus, mit dem das geht? Bei mir gibts ohne Admin-Rechte Error.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.