C ++ - Programm benötigt eine Dateizuordnung

Ich vertreibe ein Freeware-Produkt, das Textdateien mit einer eindeutigen Erweiterung liest und schreibt. Ich hoffte, dass ein Doppelklick auf eine solche Datei die App automatisch starten würde.

Während der Entwicklung unter Windows 7 Professional habe ich eine Verknüpfung eingerichtet, um meine Dateien durch Doppelklicken zu öffnen. Klicken Sie dazu mit der rechten Maustaste auf die Datei -> Öffnen mit ... -> Standardprogramm auswählen ... -> Durchsuchen ..., gefolgt von "Verwenden Sie immer das ausgewählte Programm, um diesen Dateityp zu öffnen." Gut. Es tat genau das, was es brauchte. Ich wollte mein Programm mit Anweisungen für die Benutzer ausliefern, dasselbe zu tun.

Wenn ich jedoch die Position der Binärdatei verschoben habe, ist die Option "Immer verwenden" jetzt ausgegraut / unempfindlich. Während ich also zur neuen Binärdatei navigieren konnte, konnte ich sie nicht als Standard festlegen. Da ich dachte, dass meine Benutzer auch Probleme damit haben würden, wollte ich sehen, ob die Installation oder der Start des Programms für die Zuordnung zuständig ist.

Ich habe mir Windows Installer etwa 5 Minuten lang angesehen, bevor ich festgestellt habe, dass es weitaus leistungsstärker und komplexer ist, als ich es benötige.

Also habe ich mir angesehen, ob mein Programm beim Start das Mapping selbst erstellt, wenn es nicht bereits vorhanden ist. (Ich weiß, dass dies ein sehr schlechtes Verhalten wäre, wenn wir über einen gängigen Dateityp wie .html oder .jpg sprechen, aber in diesem Fall ist es eine .blahblah-Erweiterung, die sicherlich niemand anderes für irgendetwas verwendet.)

Gestützt auf Informationen beihttp://www.cplusplus.com/forum/windows/26987/ undhttp://msdn.microsoft.com/en-us/library/cc144148(v=vs.85).aspx Ich konnte mein Programm beim Start HKEY_CLASSES_ROOT \ .blahblah öffnen lassen und den Standardtext bestätigen (und bei Bedarf ändern), um eine genaue Beschreibung der Datei zu erhalten (wobei ein Teil des Textes ersetzt wurde, der bei der Erstellung möglicherweise standardmäßig erstellt wurde) manuelle Zuordnung letzten Sommer). Wenn es jedoch darum ging, den Befehl HKEY_CLASSES_ROOT \ firm.app.1 \ shell \ open \ zu erstellen, gibt mein RegCreateKeyEx () - Wrapper, mit dem der Wert von \ .blahblah problemlos geändert werden kann, jetzt den Rückkehrcode 5 aus, anscheinend ohne Berechtigung.

Weitere Untersuchungen haben ergeben, dass das Berechtigungsmodell dazu führen kann, dass alle derartigen Anforderungen fehlschlagen. Kann jemand dies bestätigen oder leugnen? Wenn ich bestätige, gibt es eine gute Referenz, die ich in dieser Angelegenheit studieren sollte?

Ansonsten, was sind die Vorschläge? Sollte ich in die Kugel beißen und Windows Installer studieren? Oder gibt es eine Möglichkeit, die Berechtigungen zu erhalten, die zum Bearbeiten der Registrierung erforderlich sind, wenn meine eigene Software zum ersten Mal gestartet wird?

Hinweis: Ich entwickle mit Visual Studio 2008 unter Windows 7 Professional und obwohl ich immer noch ein Amateur-Windows-Programmierer bin, arbeite ich seit den 80er Jahren mit C ++ unter Unix / Linux.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage