我想使用目标路径在Windows 10中创建通用快捷方式 shell路径的扩展,类似
%windir%\explorer.exe shell:AppData ..\Local\Temp
%windir%\explorer.exe shell:AppData
独立工作,带我去漫游用户文件。
我可以用
%windir%\explorer.exe shell:UsersFilesFolder
这将带我到%UserProfile%
并从那里追加(如果我能找到方法)只有在可能的情况下才能上升到一个水平会很方便。
我无法解决
..
?)使这项工作的语法是什么?
答案 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
尽可能多地填写背面信息。