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.
źródło
AGS
to 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ładgenericbrowser.exe http://www.foobar.com
Jaki program obsługujeAGS
protokół?start
.Odpowiedzi:
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:
lubftp:
adresy w nim. Możliwe, że jakiś program po prostu zarejestrował wAGS:
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\AGS
klucz 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 wskazujeshell\open\command
podklucz.1 System Windows nazywa je „protokołami URL”, co nie jest całkowicie poprawne.
źródło
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:
źródło
: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.: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$
.