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 に答える