%1 |%2在shell打开命令中的含义是什么?

时间:2015-10-07 22:05:30

标签: registry clickonce windows-shell shellexecute

例如,Clickonce应用程序引用(.appref-ms)文件具有以下注册表项:

[HKEY_CLASSES_ROOT\Application.Reference\shell\open\command]
@="rundll32.exe dfshim.dll,ShOpenVerbShortcut %1|%2"

这提出了两个挑战:

  1. 第二次替换的价值是什么(只有一个文件)
  2. 使用管道字符使得在命令提示符中测试内容变得困难。
  3. 我已经搜索了其他类的hive,这似乎是我系统中这种构造的唯一用法。

    这些不起作用(来自命令提示符),带或不带引号:

    • rundll32.exe dfshim.dll,ShOpenVerbShortcut FileNameInCurrentDir.appref-ms
    • rundll32.exe dfshim.dll,ShOpenVerbShortcut C:\Path\To\File.appref-ms
    • rundll32.exe dfshim.dll,ShOpenVerbShortcut file://c:/Path/To/File.appref-ms
    • rundll32.exe dfshim.dll,ShOpenVerbShortcut "file:///c:/Path/To/File.appref-ms"

    导致各种错误:

    • Invalid URI: The format of the URI could not be determined.
    • Invalid URI: The URI scheme is not valid.
    • Exception reading manifest from file:///c:/Path/To/File.appref-ms: the manifest may not be valid or the file could not be opened.

1 个答案:

答案 0 :(得分:0)

管道符是参数分隔符。因此,rundll32.exe dfshim.dll,ShOpenVerbShortcut %1|%2表示:使用参数ShOpenVerbShortcutdfshim.dll%1运行%2

我注意到了两个用途:printto菜单和appref-ms。