Wie weiß das Betriebssystem, was mit einer Datei zu tun, wenn die „Öffnen mit ...“ Option ausgewählt ist?

StackOverflow https://stackoverflow.com/questions/1002270

  •  05-07-2019
  •  | 
  •  

Frage

Erläuterung: Ich erinnere mich nicht über Linux und ich weiß nicht, über OS X, aber in Windows können Sie mit der rechten Maustaste auf eine Datei und wählen Sie ein Programm, um es zu öffnen. Aber woher weiß das Betriebssystem genau wie das Programm, um es zu öffnen? Hält es den Überblick über die „Datei öffnen“ Dialoge hat das Programm? Hat der Entwickler einen speziellen Event-Handler oder etwas für diese Fälle müssen angeben?

War es hilfreich?

Lösung

Das Betriebssystem läuft das angegebene Programm als Parameter Senden der Pfad der Datei zu öffnen.

Zum Beispiel in C #, wenn Sie wissen wollen, die das Betriebssystem-Datei möchte, dass Sie was Sie tun müssen, um öffnen, werden:

class Program
{
    static void Main(string[] args)
    {
        if (args.Length == 1) //The OS wants me to open a file
            openSomeFileJustBecauseTheOSWantsIt(args[0]);
    }
}

Andere Tipps

Für Windows ist die Antwort in der Registrierung. Wenn Sie bequem sind die Registrierung zu lesen, führen Sie regedit.exe auf Ihrem Windows-Rechner.

Unter HKEY_CLASSES_ROOT finden Sie eine Schlüssel Liste aller Dateitypen, .doc, .txt, usw. Jeder dieser Schlüssel einen Schlüssel enthält namens „Openwithlist“ oder „OpenWithProgIds“. Eine Anwendung kann einen registrierte „ProgId“ hat, auch unter HKEY_CLASSES_ROOT gefunden, und es kann es PROGID zu den Dateitypen registriert sie will in OpenWithProgIds behandeln. Ansonsten registriert er sich selbst in Openwithlist.

Als Reaktion auf den Kommentar auf die erste Antwort (cos Ich habe nicht genug rep zu kommentieren):

Sie denken an DDE, die eine nahezu genug veraltete Technologie. Die Windows-Shell führt die Anwendung mit der ausgewählten Datei als ersten Parameter.

Der Windows Explorer merkt sich Ihre vorherigen „Öffnen mit ...“ Entscheidungen basierend auf Dateierweiterung in den folgenden Schlüssel:

HKCR\.ext\OpenWithList

Das nächste Mal Sie mit der rechten Maustaste auf die Datei, sieht es dort und bauen eine Liste der Programme, die Sie zuvor verwendet haben, einen bestimmten Dateityp zu öffnen.

Sagen Sie es einen Schlüssel findet Namen „myapp.exe“. Es sucht dann die Anwendung hier:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\myapp.exe

holt sich die Informationen in dem die Anwendung installiert ist. Und es geht hier:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\myapp.exe

folgt die dort gespeicherten GUID, um die Anzeigenamen der Anwendung zu erfahren.

, um den Spaß hinzuzufügen, die primäre zugehörige Anwendung ist in der Liste als gut, auch alles, was in dem OpenWithProgIds Schlüssel und alles in:

HKEY_CLASSES_ROOT\*\OpenWithList

sowie ihr jeweiliger HKEY_CURRENT_USER Pendants.

Die resultierende Liste der Anwendungen wird dann eindeutig gemacht, sortiert und angezeigt. Bei der Auswahl wird die Datei wie jede andere Datei gestartet klicken Sie bitte auf - das heißt:.

C:\path\to\myapp.exe "C:\path\to\the\file.ext"

Dateizuordnungen werden in der Registry gespeichert. HKEY_CLASSES_ROOT

Sie können sie grafisch verwalten, indem Sie mit dem Windows Explorer: (WinXP)

Klicken Sie auf Extras / Optionen / Dateitypen

oder mit dem „Standardprogramm“ Applet in der Systemsteuerung. (Vista)

Nur für einige Nostalgie des eher brillant Acorn Archimedes hatte ein viel besseres System mit jeder Datei eine eindeutige Typ-Zahl, mit einem Hersteller und Anwendungscode (eher wie eine MAC-Adresse), die mit der Datei geschrieben wurde.
Dies bedeutet, dass Sie verschiedene Dateien all genannt bak geöffnet durch die korrekte Anwendung haben können - im Gegensatz zu dem Fenster Fall, in dem ein neu installierte App das Eigentum an jedem Verlassen Datei dieses Typs stiehlt. Autocad ist especialy schlecht für diese, die Registrierung über 20 Dateitypen.

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