使用扩展shell路径在Windows 10中创建通用快捷方式

时间:2018-04-03 14:09:02

标签: windows shell windows-10 desktop-shortcut

我想使用目标路径在Windows 10中创建通用快捷方式 shell路径的扩展,类似

%windir%\explorer.exe shell:AppData ..\Local\Temp

%windir%\explorer.exe shell:AppData独立工作,带我去漫游用户文件。

我可以用

%windir%\explorer.exe shell:UsersFilesFolder

这将带我到%UserProfile%并从那里追加(如果我能找到方法)只有在可能的情况下才能上升到一个水平会很方便。

我无法解决

  • 如何将其他几个目录附加到快捷方式目标路径
  • 如何首先上传一个目录(..?)

使这项工作的语法是什么?

1 个答案:

答案 0 :(得分:2)

首先,%Temp%可能与%LOCALAPPDATA%\Temp不一样!

创建%Temp%的完美快捷方式的方法并不那么容易,理想情况下.lnk应该只包含EXP_SZ_LINK:带有%Temp%字符串的EXP_SZ_LINK_SIG块。您必须手动删除ItemIdList块才能获得类似的.lnk文件。 %Temp%更加复杂,因为它没有可以与shell一起使用的特殊文件夹规范名称:protocol。

我不相信shell:协议支持...路径组件。

shell:AppData ..\Local也是错误的,因为本地appdata文件夹可能位于其他位置(< Windows Vista使用不同的名称),更好的命令是%windir%\explorer.exe "shell:LocalAppData"(反过来%windir%\explorer.exe "shell:Local AppData\Temp")但所有这些命令都有其他问题。

首先,资源管理器可能不是用户shell,您可能无法遵守用户首选项。

另一个问题是.lnk文件包含其目标的属性,并且因为该链接实际指向.exe文件,您的.lnk文件将不会为其目标属性和shell设置FILE_ATTRIBUTE_DIRECTORY位不明白它指向一个文件夹。指向文件夹的.lnk有时会在导航shell时在同一窗口中打开,而不是打开新的文件浏览器窗口。

.lnk二进制格式为documented,通过打破规则,我可以通过组合EXP_SPECIAL_FOLDER创建一个指向特殊shell文件夹中的文件/文件夹的链接用一个被操纵的ItemIdList阻塞,但无论出于何种原因,这个技巧都不适用于更深的路径。

EXP_SPECIAL_FOLDER块和空ItemIdList是创建特殊文件夹快捷方式的唯一方法,保证可以在所有系统上运行,但必须手动创建,IShellLink实现添加系统特定的如果您尝试使用其他系统上的链接,可能会破坏的块。

自Windows 95以来,.lnk格式没有太大变化,并且没有简单的方法来创建相对于特殊文件夹的快捷方式,这些文件夹在复制到其他系统时也能正常工作。 .lnk中的相对路径字符串是相对于.lnk文件本身的,在这种情况下没有帮助。

我建议您只需在安装程序/应用程序中的目标系统上创建.lnk,然后让IShellLink尽可能多地填写背面信息。