Wie funktioniert das Aufrufen eines Programms in Windows XP über „Ausführen …“ mit einem Doppelpunkt als Argument?

Wie funktioniert das Aufrufen eines Programms in Windows XP über „Ausführen …“ mit einem Doppelpunkt als Argument?

Mir ist aufgefallen, dass ein bestimmtes Programm beim Senden eines Arguments auf besondere Weise vorgeht.

Die einzige Möglichkeit, ein Argument zu senden, besteht darin, auf „Start -> Ausführen ...“ zu klicken und Folgendes einzugeben:

[programname]:[argument]

zum Beispiel (was sowieso nicht funktioniert)

notepad:textfile.txt 

Wenn ich versuche, dasselbe von einem Befehlszeilenfenster aus zu tun, funktioniert es nicht. Das „Programmname-Argument“ auch nicht. Ich muss das Programm mit einem Argument von einer Website aus öffnen können (mit einer Wscript-Shell, was eine andere Geschichte ist), aber das wird wahrscheinlich nicht funktionieren.

Hat jemand eine Ahnung, wie diese seltsame Doppelpunktsyntax funktioniert?

UPDATE: Wie gewünscht, hier ein echtes Beispiel:

AGS:pref.serv01.com(ARG1:ARG2)

Das ist die genaue Syntax, die dazu führt, dass das Programm die spezifischen Informationen für ARG1 und ARG2 öffnet. AGS ist nur der Name des Programms, das ein normales Windows-Programm ist.

Antwort1

DerLaufen...Dialog ist nicht auf lokale Dateien beschränkt – er akzeptiert auch alle URI-Schemata 1 Eingetragenim System können Sie beispielsweise darin http:oder Adressen öffnen. Es ist möglich, dass ein Programm das URI-Schema einfach zu diesem Zweck registriert hat. (Die gesamte URI wird unverändert an das Programm übergeben, das seine eigenen Analyseregeln anwenden kann.)ftp:AGS:

Sehen Sie sich den HKEY_CLASSES_ROOT\AGSSchlüssel im Registrierungseditor an und prüfen Sie, ob er etwas über Ihr Programm aussagt, ob er einen Wert mit dem Namen " URL Protocol" enthält und worauf der shell\open\commandUnterschlüssel verweist.


1 Windows nennt sie „URL-Protokolle“, was nicht ganz korrekt ist.

Antwort2

Der Doppelpunkt dient zur Bezugnahme aufAlternative Datenströmein NTFS. Möglicherweise enthält Ihr Programm versteckte Datenströme mit ausführbaren Dateien.

Ich denke, dass dies nicht über das Befehlszeilenargument möglich ist, da der Shell-Parser dadurch verwirrt wird. Der „Ausführen“-Dialog ist jedoch viel freizügiger.

Wenn dies der Fall ist, können Sie versuchen, es einfach wie folgt zu extrahieren:

c:> type program:argument > output

verwandte Informationen