あるプログラムが引数を送信するときに特別な方法で動作することに気付きました。
引数を送信する唯一の方法は、「スタート -> 実行...」をクリックして次のように入力することです。
[programname]:[argument]
例えば(これはどうせ機能しない)
notepad:textfile.txt
同じことをコマンドライン ウィンドウから実行しようとしても、機能しません。「programname argument」も同様です。Web サイトから引数を使用してプログラムを開くことができる必要があります (Wscript シェルを使用するのは別の話ですが) が、これはおそらく機能しません。
この奇妙なコロン構文がどのように機能するかを知っている人はいますか?
更新: ご要望に応じて、実際の例を以下に示します。
AGS:pref.serv01.com(ARG1:ARG2)
これは正確な構文であり、プログラムは ARG1 と ARG2 の特定の情報を開きます。AGS は、通常の Windows プログラムであるプログラムの名前にすぎません。
答え1
の走る...ダイアログはローカルファイルに限定されず、すべてのURIスキームも受け入れます1 登録済みたとえば、システム内でアドレスを開いたりhttp:
、ftp:
アドレスを取得したりできます。一部のプログラムがこの目的のために URI スキームを登録しただけである可能性がありますAGS:
。(URI 全体が変更されずにプログラムに渡され、プログラムが独自の解析ルールを適用できます。)
レジストリ エディターでキーを調べてHKEY_CLASSES_ROOT\AGS
、プログラムに関する情報が含まれているかどうか、URL Protocol
キーに「 」という名前の値が含まれているかどうか、shell\open\command
サブキーが何を指しているかを確認します。
1 Windows ではこれを「URL プロトコル」と呼んでいますが、これは完全に正しいわけではありません。
答え2
コロンは、代替データストリームNTFS の場合、プログラムに実行可能ファイルを含む隠しデータ ストリームが含まれている可能性があります。
シェル パーサーが混乱するため、コマンド ライン引数からは実行できないと思います。ただし、「実行」ダイアログははるかに許容範囲が広いです。
もしそうなら、次のように簡単に抽出してみてください:
c:> type program:argument > output