我注意到某個程式在發送參數時以特殊的方式運作。
發送參數的唯一方法是點擊“開始 -> 運行...”並輸入:
[programname]:[argument]
例如(無論如何都不起作用)
notepad:textfile.txt
如果我嘗試從命令列視窗執行相同的操作,則不起作用。 “程序名參數”也沒有。我必須能夠使用來自網站的參數開啟程式(使用 Wscript shell,這是另一個故事),但這可能行不通。
有誰知道這種奇怪的冒號語法是如何運作的?
更新:根據要求,這是一個真實的例子:
AGS:pref.serv01.com(ARG1:ARG2)
這正是語法,導致程式開啟 ARG1 和 ARG2 的特定資訊。 AGS 只是程式的名稱,它是一個普通的 Windows 程式。
答案1
這跑步...對話方塊不僅限於本機檔案 – 它還接受所有 URI 方案1 掛號的例如,您可以在系統中開啟http:
或ftp:
位址。某些程式可能只是AGS:
為此目的註冊了 URI 方案。 (整個 URI 未經修改地傳遞給程序,程式可以應用自己的解析規則。)
查看HKEY_CLASSES_ROOT\AGS
註冊表編輯器中的鍵,看看它是否說明了有關您的程式的任何信息,URL Protocol
其中是否有名為“”的值,以及shell\open\command
子鍵指向什麼。
1 Windows 將它們稱為“URL 協定”,這並不完全正確。
答案2
冒號字元用於引用備用資料流在 NTFS 中。也許您的程式隱藏了其中包含可執行檔的資料流。
我認為它不能從命令列參數完成,因為 shell 解析器會感到困惑。然而,「運行」對話框要寬鬆得多。
如果是這樣,您可以嘗試透過簡單地提取它:
c:> type program:argument > output