Skript zu verbinden eine Erweiterung für ein Programm
-
03-07-2019 - |
Frage
Mein Kunde ist das ersetzen von MS Office zu OpenOffice in einigen workstations.Mein Programm eine Datei exportieren, um Excel mit Hilfe der .xml-Erweiterung (mit offenen format) und öffnet es mit den aktuellen zugehörigen Programm (mit ShellExecute)
Das problem ist, dass OpenOffice nicht registrieren .xml-Erweiterung zugeordnet.
Manuell association funktioniert, aber ich möchte einen .reg-oder etwas zu leicht ändern Sie die Einstellung.
Ich bin auf der Suche in der registry in einem PC, der mit dem Wechsel schon gemacht, aber die
"HKEY_CLASSES_ROOT\.xml"
Schlüssel nicht haben nichts verweisen auf OpenOffice.
Wo ist der Verein gespeichert?Wie kann ich ein Skript, um die Arbeit zu tun?
Lösung
Der Verein ist gespeichert in die Schlüssel, "HKEY_CLASSES_ROOT\.xml"
Punkte zu.
Auf meinem Rechner, den Standardwert der Schlüssel, sagt "xmlfile"
, die meisten wahrscheinlich, dass das gleiche für Ihre.
So let ' s go to "HKEY_CLASSES_ROOT\xmlfile"
.Dort können Sie sehen (und zu ändern), was Befehl ist verwendet zu starten Typ der Datei:
HKEY_CLASSES_ROOT\xmlfile\shell\open\command
Windows verwendet diese Art der Umleitung auf die Karte mehrere Datei-Erweiterungen, um den gleichen Dateityp, und damit zu der gleichen Anwendung.
Unter "HKEY_CLASSES_ROOT\xmlfile\shell"
es gibt mehrere sub-Tasten, die Aussehen wie die "Verben" von dem, was Sie tun können, um die Datei.Wieder, ist der default-Wert des "shell"
Schlüssel entscheidet, welche dieser Verben wird verwendet, wenn Sie einen Doppelklick auf die Datei.In meinem Fall ist dies "open"
.
Fazit:
Mit diesem wissen, der einfachste Weg, um eine Vereinigung skriptfähig ist, verwenden Sie "regedit", um den export ein .reg-Datei, die das zu ändern, und es gelten für das target-computer mit einem Doppelklick oder:
regedit /s new_xml_association.reg
oder (wenn du XP oder höher und wissen, was Sie tun) überschreiben den aktuellen Wert mit:
reg add "HKEY_CLASSES_ROOT\xmlfile\shell\open\command" /ve /d "path\to\program %1"
Auf jeden Fall ein tiefer Blick ins reg add/?
Befehl wird empfohlen.Die erste Lösung ist sicherer.
Andere Tipps
Sehen Sie den DOS-Befehl assoc
:
C:> Assoc /? Zeigt oder ändert Dateierweiterung Verbände
ASSOC [.ext [= [filetype]]]
.ext Gibt die Datei an Erweiterung des Dateityp zuordnen mit Dateityp Gibt die Datei an Geben Sie mit der Datei zu verknüpfen Erweiterung
Typ ASSOC ohne Parameter die aktuellen Dateizuordnungen anzuzeigen. Wenn ASSOC mit nur einer Datei aufgerufen Erweiterung, es zeigt die aktuelle Dateizuordnung für diese Datei Erweiterung. Geben Sie nichts für die Dateityp und der Befehl löscht der Verein für die Datei Erweiterung.
Mit Dateizuordnungen in diesem Fall scheint die falsche Sache zu tun. Sie möchten, dass Ihre Anwendung die Datei in Openoffice zu öffnen, aber was, wenn Ihr Benutzer möchte unangetastet die Dateizuordnung für XML-Dateien verlassen? Was passiert, wenn etwas anderes auf ihrem System auf diesem Verband beruft sich auch? Sie brechen ihr System in diesem Fall. Wenn Sie die IT-Mitarbeiter sind dann vielleicht, dass in Ordnung ist (noch fraglich Programmierstil), aber wenn nicht, dann ist dies eine schlechte Sache zu tun.
Mit der Openoffice-COM-Implementierung statt die Datei zu öffnen.
Gute einfaches Beispiel hier: http://www.kalitech.fr/clients/doc/VB_APIOOo_en.html
Ich kam gerade über diese während für die gleiche Antwort zu suchen. Ich finde eine bessere Lösung, um das Windows-FindExecutable-API, das von C # verwendet werden kann PInvoke verwenden.