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?

War es hilfreich?

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.

http://www.pinvoke.net/default.aspx/shell32.findexecutable

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top