我正在尝试检索Windows .lnk快捷方式的目标路径,但根据.lnk文件的属性,“目标”不是实际的文件路径:
我正在使用IWshRuntimeLibrary,我正在访问的快捷方式对象是IWshShortcut类型:
WshShell shell = new WshShell();
IWshShortcut link = (IWshShortcut)shell.CreateShortcut(lnkFileName);
// This returns "C:\Windows\Installer\{F843C6A3-224D-4615-94F8-3C461BD9AEA0}\PaintShopProExeIcon.ico"
var targetPath = link.TargetPath;
// This is the same as the "Start in" value in the image above
var workingDir = link.WorkingDirectory;
“link”对象的TargetPath属性不是实际.exe的位置:“C:\ Windows \ Installer {F843C6A3-224D-4615-94F8-3C461BD9AEA0} \ PaintShopProExeIcon.ico”
我可以从这个对象获取WorkingDirectory属性,这似乎与快捷方式的“Start in”属性相同,如上图所示。我的问题是,如果TargetPath不是实际的.exe路径,如何获取快捷方式打开的.exe文件的实际目标路径?这个信息在哪里?
此示例中的实际目标路径是“C:\ Program Files(x86)\ Jasc Software Inc \ Paint Shop Pro 9 \ Paint Shop Pro 9.exe”。系统如何知道具体打开“Paint Shop Pro.exe”?