Windowsが完全なパスを通過しています。あなたはちょうどそれを解析することに問題があります。上記の例では
This is a test "%1" -> This is a test "C:\Program Files\Blah blah"
-> cmdArgs(0) = "This"
-> cmdArgs(1) = "is"
-> cmdArgs(2) = "a"
-> cmdArgs(3) = "test"
-> cmdArgs(4) = "C:\Program Files\Blah blah"
、言葉の前後に引用符がフレーズに存在しないので、「これはテストです」と、それらは別々のコマンドライン引数として渡されます。 2番目の例では
"This is a test "%1"" -> "This is a test "C:\Program Files\Blah blah""
-> cmdArgs(0) = "This is a test "
-> cmdArgs(1) = "C:\Program"
-> cmdArgs(2) = "Files\Blah"
-> cmdArgs(3) = "blah"
、引用は%1
は引用符で囲まれていない実際のファイル名を残して、最初の引数を終了する前に、挿入マーク。
"This is a test" "%1" -> "This is a test" "C:\Program Files\Blah blah"
-> cmdArgs(0) = "This is a test"
-> cmdArgs(1) = "C:\Program Files\Blah blah"
3つ目の例では、2つの引数が別々に引用されるため、2つの引数としてプログラムに渡されます。これはあなたが使用すべきものです。あなたの問題は、cmdArgs(0)
しか見ておらず、残りの部分はcmdArgs
で無視しているということです。特に、ファイル名のあるcmdArgs(1)
をチェックアウトするのを忘れてしまった。
あなたは 'hkcr \ filetype \ shell \ operation'の値を意味しますか? –
いいえ、最後のパラメータはファイル名で、おそらくスペースが含まれています。 VB.Netアプリケーションに文字列全体を渡すソースアプリケーションを取得できません: -/ – Gulbahar