Windows注册表中 shell/(open|print|*)/command 项可用的%变量参数意义

陪她去流浪 桃子 2016年03月05日 阅读次数:7527

从我初三开始接触注册表那年起,注册表中 shell/open/command 中的参数我就只知道一个“%1”,大概是代表传递给可执行文件的第1个参数。这么多年过去了,我仍旧只知道这一个,再也没有其它的了。

直到最近的某天,看到一个 %L 时,不懂了,终于决定搜索一下,搞清楚这些鬼东西到底是什么鬼。

然而,根据 Creating Shortcut Menu HandlersExtending Shortcut Menus 这两篇文章看来,貌似并没有多少收获,MSDN 只提到了 %1、%2,其它依然不知道,看来又是什么非公开的玩意儿,去死吧,[发怒][发怒]

不过,找到一篇看似很旧的文章和一个StackOverflow上面的问题有提到一些:

  1. The START command: Windows NT 4/Windows 2000 Syntax
  2. Which special variables are available when writing a shell command for a context menu

所以我也总结下几个常用的,以方便后续查阅,不保证正确性,待考证!有错误的话,请不吝在评论中指出。

参数不区分大小写。其它的请参考上面我列出的参考,因有异议,我就不再描述。

参数意义
%*代表所有的参数
%0, %1第1个(文件)参数的完整路径,不包含引号。
当应用程序是16位时,得到8.3短路径形式;当应用程序是32/64位时,得到长路径。
%2 ~ %9第2个 到 第9个 参数
%L第1个(文件)参数的长路径名形式。
因此,相对于 %0 或 %1 来说,使用 %L 是更好的,因为它不会去判断应用程序类型。总是传长路径形式。
%W工作目录

这篇文章的内容已被作者标记为“过时”/“需要更新”/“不具参考意义”。

标签:WinAPI · 注册表