1

解决 lnk 的常用方法包括使用 WShell.WshShortcut 或 IShellLink :

var WshShell = WScript.CreateObject("WScript.Shell");
var oShellLink = WshShell.CreateShortcut(strDesktop + "\\some-shortcut.lnk");
WScript.Echo(oShellLink.TargetPath)

但是有些链接无法以这种方式解决:例如,分辨率以c:\windows\installer\{some-guid}\python_icon.exe 结尾。大多数 Office 程序也有这个问题。

CodeProject 通过对 lnk 格式http://www.codeproject.com/KB/shell/ReadLnkFile.aspx进行逆向工程来完成另一种解决方案,但它在这些情况下不起作用。

还有其他方法吗?

这个 c:\Windows\Installer 文件夹是什么?放入其中的 something_icon.exe 是什么?

4

1 回答 1

1

好的,我在这里找到了解决方案:http: //social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/2df18f93-77d8-4217-94a1-6cbe5333a6c4

由于这些 lnk 是 MSI lnk,您必须使用 Msi 函数来解析路径:

TCHAR pc [50] = {0};
TCHAR feat [100] = {0};
TCHAR comp [50] = {0};
int b=MsiGetShortcutTarget("Python (command line).lnk",pc,feat,comp);

TCHAR pth [500] = {0};
DWORD chs = 500;
int i = MsiGetComponentPath (pc, comp, pth, &chs);

pth包含路径。

于 2009-06-08T12:35:59.813 回答