Dateityp Assoziation mit der Anwendung (C #)

8

Ich habe ein paar Fragen dazu:

1) Ist es möglich, mein Programm die Dateitypzuordnung zu ändern, aber nur wenn es läuft? Siehst du etwas falsch mit diesem Verhalten?

2) Die andere Option, die ich sehe, besteht darin, den Benutzern zu ermöglichen, mit meiner Anwendung zu öffnen oder die Standardzuordnung wiederherzustellen ... etwas wie: "alle .lala-Dateien erfassen" oder ".lala-Verknüpfung wiederherstellen". Wie kann ich das machen? Was halten Sie für den besten Ansatz?

    
Matías 21.10.2008, 16:35
quelle

4 Antworten

7

Was Dateiverknüpfungen angeht, habe ich bereits früher eine Antwort geschrieben, dass zumindest deckt das" Wie " ab.

Dies sollte Sie auch in die richtige Richtung weisen, wie Sie mit Backup und Restore umgehen. Mit dem direkten Registrierungszugriff über c # müssen keine .reg-Dateien verwendet werden. Sie können also den vorherigen Wert beliebig in Ihrer App sichern und von dort aus wiederherstellen.

Die Schlüsselfrage lautet: Soll die Dateizuordnung zufällig geändert werden? Zumindest wäre es natürlich notwendig, den Benutzer im Voraus zu fragen (wie Sie auch angegeben haben).

Darüber hinaus verfügen Vista-Benutzer mit aktivierter Benutzerkontensteuerung oder nicht berechtigte Benutzer anderer Windows-Versionen möglicherweise nicht über die erforderliche Berechtigung zum Ändern globaler Dateizuordnungen. Die (Un-) Installationsprozedur Ihres Programms ist möglicherweise der einzige Ort, an dem dies gelingen kann.

BEARBEITEN

Franci Penov in seiner Antwort angegeben , dort ist eine Möglichkeit, lokale Dateizuordnungen für einzelne Benutzer zu ändern, auch für Nicht-Administratoren (deshalb habe ich im vorherigen Absatz von "globalen Zuordnungen" gesprochen). Er erwähnte auch, warum es nicht ratsam ist, dorthin zu fahren.

    
Tomalak 21.10.2008, 16:51
quelle
3

Sie können eine "fliegende" Dateizuordnungsänderung implementieren, indem Sie eine kleine ausführbare Datei dieser Dateierweiterung zuordnen, die beim Start prüft, ob Ihre Hauptanwendung ausgeführt wird und den Dateinamen an sie weitergibt oder nicht Rufen Sie die "reguläre" verknüpfte Anwendung auf.

Der Hauptvorteil dieses Ansatzes besteht darin, dass Sie nur einmal mit der Registrierung fertig werden müssen.

Die Hauptnachteile dieses Ansatzes sind:

  • Sie brauchen einen Hilfsprozess
  • Die Anwendung, die diese Dateierweiterungen "besitzt", kann die Änderung erkennen und sich beim Benutzer beschweren, was "Reparieren" zur Folge hat und Sie aus dem Bild herausbringt.

Alternativ können Sie die Dateizuordnung beim Start Ihres Hauptprogramms ändern. Dies funktioniert auch für Nicht-Admin-Benutzer. während Dateizuordnungen in HKEY_CLASSES_ROOT gespeichert sind, gibt es einen kleinen Trick - HKCR ist eigentlich eine Karte von HKEY_LOCAL_MACHINE\SOFTWARE\Classes und HKEY_CURRENT_USER\SOFTWARE\Classes . So können Sie die Dateierweiterung für den aktuellen Benutzer vorübergehend in HKCU registrieren und die ursprüngliche Zuordnung von HKLM "shadow".

Natürlich würde ich von diesem Ansatz abraten, da es nur einen Absturz in Ihrer Anwendung braucht, um diese Assoziation dauerhaft zu machen, und da nur sehr wenige Anwendungen mit Dateiverknüpfungen in HKCU umgehen können, wird es wahrscheinlich ein nicht wiederherstellbare Situation für die ursprüngliche Anwendung.

    
Franci Penov 21.10.2008 17:54
quelle
2

Es kann wahrscheinlich getan werden, aber ich denke, es würde am Ende schwerfällig sein. Alle Dateitypzuordnungen werden in der Registrierung gespeichert, sodass Sie jedes Mal, wenn Ihre App gestartet und beendet wird, Registrierungseinträge schreiben / wiederherstellen müssen. Abhängig davon, wie häufig Sie dies tun, werden die neuen Assoziationen möglicherweise nicht sofort im Windows Explorer übernommen.

Die Assoziationen sind unter HKEY_CLASSES_ROOT in der Registrierung aufgelistet und können eine ganze Reihe von Möglichkeiten (MIME-Typen / progIDs / etc) zugeordnet werden.

Viele Apps, die ich gesehen habe, fragen Sie, ob Sie bestimmte Dateitypen während der Installation mit der Anwendung verknüpfen möchten, und Sie können die aktuellen Einstellungen ablehnen und die aktuellen Einstellungen beibehalten.

Ich denke nicht, dass ich die Dateitypzuordnungen empfehlen würde

    
Mike Marshall 21.10.2008 16:45
quelle
1

1) Sie können die Dateitypen definieren, die sich in der Dropdown-Liste Dateityp öffnen befinden. Darüber hinaus ist es möglich , den Dateityp-Standardwert für geöffnete Anwendungen zu ändern und dann während des Schließens der Anwendung zu ersetzen, da die Dateitypzuordnung nur eine Registrierungseinstellung ist.

Als falsch, würde ich nicht. Der erste Grund ist, dass es nicht das Standardverhalten von Anwendungen ist. Der zweite Grund ist, dass Sie, wenn Ihre Anwendung oder Ihr PC unerwartet beendet wird, das Risiko eingehen, die Verknüpfung nicht auf ihre ursprüngliche Einstellung zurückzuführen.

2) Windows erlaubt dem Benutzer standardmäßig, diese Optionen zu wählen, indem er die rechte Maustaste und den Befehl "Öffnen mit" verwendet.

    
Stephen Wrighton 21.10.2008 16:46
quelle

Tags und Links