Как работает вызов программы в Windows XP из «Выполнить...» с аргументом двоеточием?

Как работает вызов программы в Windows XP из «Выполнить...» с аргументом двоеточием?

Я заметил, что определенная программа работает особым образом при отправке аргумента.

Единственный способ отправить аргумент — нажать «Пуск -> Выполнить...» и ввести:

[programname]:[argument]

например (что все равно не работает)

notepad:textfile.txt 

Если я попытаюсь сделать то же самое из окна командной строки, это не сработает. Также не сработает и "programname argument". Я должен иметь возможность открыть программу с аргументом с веб-сайта (с помощью оболочки Wscript, что уже другая история), но это, вероятно, не сработает.

Кто-нибудь знает, как работает этот странный синтаксис с двоеточием?

ОБНОВЛЕНИЕ: Как и просили, вот реальный пример:

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

Это точный синтаксис, который приводит к тому, что программа открывает конкретную информацию для ARG1 и ARG2. AGS — это просто название программы, которая является обычной программой Windows.

решение1

TheБегать...диалог не ограничивается локальными файлами – он также принимает все схемы URI 1 зарегистрированв системе Например, вы можете открыть http:или ftp:адреса в нем. Возможно, что какая-то программа просто зарегистрировала AGS:схему URI для этой цели. (Весь URI передается без изменений в программу, которая может применять собственные правила синтаксического анализа.)

Взгляните на HKEY_CLASSES_ROOT\AGSраздел в редакторе реестра и посмотрите, говорит ли он что-нибудь о вашей программе, есть ли в нем параметр с именем « URL Protocol» и shell\open\commandна что указывает этот подраздел.


1 Windows называет их «URL-протоколами», что не совсем верно.

решение2

Символ двоеточия используется для обозначенияАльтернативные потоки данныхв NTFS. Возможно, ваша программа имеет скрытые потоки данных с исполняемыми файлами.

Я думаю, что это невозможно сделать из аргумента командной строки, потому что парсер оболочки запутается. Однако диалог "запустить" гораздо более либерален.

Если это так, вы можете попробовать извлечь его просто:

c:> type program:argument > output

Связанный контент