Jak działa wywoływanie programu w systemie Windows XP z „Run…” z argumentem dwukropka?

2

Zauważyłem, że pewien program działa w specjalny sposób podczas wysyłania argumentu.

Jedynym sposobem wysłania argumentu jest kliknięcie „Start -> Uruchom ...” i wpisanie:

[programname]:[argument]

na przykład (co i tak nie działa)

notepad:textfile.txt 

Jeśli spróbuję zrobić to samo z okna wiersza poleceń, to nie zadziała. „Argument nazwa programu” też nie. Muszę być w stanie otworzyć program z argumentem ze strony internetowej (z powłoką Wscript, która jest inną historią), ale prawdopodobnie to nie zadziała.

Czy ktoś ma pojęcie, jak działa ta dziwna składnia jelita grubego?

AKTUALIZACJA: Zgodnie z życzeniem, oto prawdziwy przykład:

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

To jest dokładna składnia, która powoduje, że program otwiera określone informacje dla ARG1 i ARG2. AGS to tylko nazwa programu, który jest normalnym programem dla systemu Windows.

Społeczność
źródło
Czy możesz dać nam prawdziwy przykład.
David Heffernan,
Co to jest AGS? ....
David Heffernan,
1
Podejrzewam, że AGSto podobny protokół http. Jeśli tak, sposobem na „uruchomienie” adresu URL z cmd.exe jest określenie programu i przekazanie go do niego, na przykład genericbrowser.exe http://www.foobar.comJaki program obsługuje AGSprotokół?
horatio
@Mike: Jeśli chcesz dodawać komentarze, najpierw utwórz pełne konto na Stack Overflow, a następnie zaloguj się za jego pomocą tutaj.
grawitacja
@horatio: Nie, należy użyć najbliższego okna dialogowego Uruchomstart .
grawity

Odpowiedzi:

1

Run ... dialogowe nie ogranicza się do lokalnych plików - również akceptuje wszystkie schematy URI 1 zarejestrowanych w systemie Dla przykładu, można otworzyć http:lub ftp:adresy w nim. Możliwe, że jakiś program po prostu zarejestrował w AGS:tym celu schemat URI. (Cały identyfikator URI jest przekazywany niezmodyfikowany do programu, który może stosować własne reguły analizy).

Spójrz na HKEY_CLASSES_ROOT\AGSklucz w Edytorze rejestru i sprawdź, czy mówi on coś o twoim programie, czy ma w nim wartość o nazwie „ URL Protocol” i na co wskazuje shell\open\commandpodklucz.


1 System Windows nazywa je „protokołami URL”, co nie jest całkowicie poprawne.

grawitacja
źródło
0

Znak dwukropka jest używany w odniesieniu do alternatywnych strumieni danych w systemie plików NTFS. Być może twój program ma ukryte strumienie danych z plikami wykonywalnymi.

Myślę, że nie można tego zrobić z argumentu wiersza poleceń, ponieważ parser powłoki się myli. Okno dialogowe „Uruchom” jest jednak znacznie bardziej liberalne.

Jeśli tak, możesz spróbować go wyodrębnić, po prostu:

c:> type program:argument > output
rodrigo
źródło
Jest to możliwe, ale w tym przypadku strumienie zostałyby nazwane jak :pref.serv01.com(ARG1:ARG2)i wydaje mi się mało prawdopodobne, aby istniał osobny strumień zawierający w każdym z nich pełny plik wykonywalny, nazwany po każdej możliwej kombinacji serwer / arg1 / arg2.
grawity
Ponadto :pref.serv01.com(ARG1:ARG2)nie jest nawet prawidłową nazwą strumienia, ponieważ ARG2)część zostanie zinterpretowana jako typ strumienia, a wszystkie prawidłowe typy zaczynają się od $.
grawity